Документация Engee

Конвейеры и объединения признаков

Большинство задач науки о данных и машинного обучения предполагают выполнение нескольких этапов предварительной обработки и преобразования данных. ScikitLearn.jl предоставляет два типа для упрощения этого процесса.

Конвейеры

Конвейер можно использовать для объединения нескольких средств оценки в одно. Это удобно, поскольку при обработке данных часто существует фиксированная последовательность шагов, например выбор признаков, нормализация и классификация.

julia> using ScikitLearn

julia> using ScikitLearn.Pipelines: Pipeline, make_pipeline

julia> @sk_import decomposition: PCA
PyObject <class 'sklearn.decomposition._pca.PCA'>

julia> @sk_import linear_model: LogisticRegression
PyObject <class 'sklearn.linear_model._logistic.LogisticRegression'>

julia> using RDatasets: dataset

julia> iris = dataset("datasets", "iris");

julia> X = convert(Array, iris[!, [:SepalLength, :SepalWidth, :PetalLength, :PetalWidth]]);

julia> y = convert(Array, iris[!,:Species]);

julia> estimators = [("reduce_dim", PCA()), ("logistic_regression", LogisticRegression())]
2-element Array{Tuple{String,PyCall.PyObject},1}:
 ("reduce_dim", PyObject PCA())
 ("logistic_regression", PyObject LogisticRegression())

julia> clf = Pipeline(estimators)
Pipeline(Tuple{Any,Any}[("reduce_dim", PyObject PCA()), ("logistic_regression", PyObject LogisticRegression())], Any[PyObject PCA(), PyObject LogisticRegression()])

julia> fit!(clf, X, y)
 Pipeline(Tuple{Any,Any}[("reduce_dim", PyObject PCA()), ("logistic_regression", PyObject LogisticRegression())], Any[PyObject PCA(), PyObject LogisticRegression()])

Подробные сведения см. в описании ?Pipeline, ?make_pipeline и руководстве пользователя.

Объединения признаков

FeatureUnion объединяет несколько объектов преобразователей в новый преобразователь, который объединяет их выходные данные. FeatureUnion содержит список объектов преобразователей. Во время подбора каждый из них подбирается для данных независимо. Для преобразования данных преобразователи применяются параллельно, а векторы выборок, которые они выдают, объединяются в более крупные векторы.

julia> using ScikitLearn.Pipelines: FeatureUnion

julia> @sk_import decomposition: KernelPCA
PyObject <class 'sklearn.decomposition._kernel_pca.KernelPCA'>

julia> estimators = [("linear_pca", PCA()), ("kernel_pca", KernelPCA())]
2-element Array{Tuple{String,PyCall.PyObject},1}:
 ("linear_pca", PyObject PCA())
 ("kernel_pca", PyObject KernelPCA())

julia> combined = FeatureUnion(estimators)
FeatureUnion(Tuple{Any,Any}[("linear_pca", PyObject PCA()), ("kernel_pca", PyObject KernelPCA())], 1, nothing)

Подробные сведения см. в описании ?FeatureUnion и руководстве пользователя.