Модели
Модели Python
В scikit-learn имеется порядка 100—200 моделей (чаще называемых средствами оценки), разделенных на три категории.
-
Контролируемое обучение (линейная регрессия, машины опорных векторов, случайный лес, нейронные сети и т. д.)
-
Неконтролируемое обучение (кластеризация, PCA, смешанные модели, обучение на основе многообразий и т. д.)
-
Преобразование набора данных (предварительная обработка, извлечение признаков текста, кодирование с одним активным состоянием и т. д.)
Все эти средства оценки будут работать с ScikitLearn.jl. Их можно импортировать с помощью @sk_import
. Например, вот как импорт и подбор sklearn.linear_regression.LogisticRegression
julia> using ScikitLearn, Random
julia> Random.seed!(11); #обеспечивают воспроизводимость.
julia> X = rand(20,3); y = rand([true, false], 20);
julia> @sk_import linear_model: LogisticRegression
PyObject <class 'sklearn.linear_model._logistic.LogisticRegression'>
julia> using ScikitLearn.CrossValidation: train_test_split
julia> X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42);
julia> log_reg = fit!(LogisticRegression(penalty="l2"), X_train, y_train);
julia> predict(log_reg, X_test)
5-element Array{Bool,1}:
0
0
0
0
0
Напоминание. ?LogisticRegression
содержит много информации о параметрах модели.
Установка и импорт моделей Python
Для импорта моделей Python требуется Python 3.x с numpy и библиотека scikit-learn. Проще всего это можно сделать с помощью пакета Conda.jl, который уже установлен в вашей системе. При вызове @sk_import linear_model: LinearRegression
все компоненты должны будут установлены автоматически. Кроме того, scikit-learn
можно установить вручную с помощью Conda.add("scikit-learn")
. Если у вас возникли другие проблемы, изучите раздел о PyCall.jl или разместите проблему.
Модели Julia
Модели Julia размещены в других пакетах, и их нужно устанавливать отдельно с помощью Pkg.add
или Pkg.checkout
(чтобы получить последнюю версию — иногда это необходимо). Все они реализуют общий API и предоставляют информацию о гиперпараметрах в своих ?docstrings
.
К сожалению, некоторые пакеты экспортируют функцию
|
Встроенные модели ScikitLearn
-
ScikitLearn.Models.LinearRegression()
реализует линейную регрессию с помощью\\\
, оптимизированную для скорости. Дополнительные сведения о параметрах подбора см. в описании?LinearRegression
.
GaussianMixtures.jl
julia> using GaussianMixtures: GMM #Сначала обязательно установите пакет.
julia> gmm = fit!(GMM(n_components=3, kind=:diag), X_train);
[ Info: Initializing GMM, 3 Gaussians diag covariance 3 dimensions using 15 data points
Iters objv objv-change | affected
-------------------------------------------------------------
0 1.462249e+00
1 1.041033e+00 -4.212161e-01 | 2
2 9.589243e-01 -8.210827e-02 | 2
3 9.397430e-01 -1.918135e-02 | 0
4 9.397430e-01 0.000000e+00 | 0
K-means converged with 4 iterations (objv = 0.9397430000827904)
┌ Info: K-means with 15 data points using 4 iterations
└ 1.3 data points per parameter
julia> predict_proba(gmm, X_test)
5×3 Array{Float64,2}:
1.37946e-7 5.58899e-9 1.0
0.986895 1.98749e-10 0.0131053
0.998037 1.00296e-15 0.00196321
2.66238e-11 0.041746 0.958254
0.999984 4.05443e-6 1.16204e-5
Документация на странице о GaussianMixtures.jl. Пример: оценка плотности
GaussianProcesses.jl
julia> using GaussianProcesses: GPE, MeanZero, SE #Сначала обязательно установите пакет.
julia> gp = fit!(GPE(; mean=MeanZero(), kernel=SE(0.0, 0.0), logNoise=-1e8), X_train, Float64.(y_train))
GP Exact object:
Dim = 3
Number of observations = 15
Mean function:
Type: MeanZero, Params: Float64[]
Kernel:
Type: GaussianProcesses.SEIso{Float64}, Params: [0.0, 0.0]
Input observations =
[0.376913304113047 0.5630896022795546 … 0.31598998347835017 0.5828199336036355; 0.50060556533132 0.4124482236437548 … 0.6750380496244157 0.6147514739028759; 0.5142063690337368 0.4774433498612982 … 0.9823652195180261 0.21010382988916376]
Output observations = [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0]
Variance of observation noise = 0.0
Marginal Log-Likelihood = -749.473
julia> predict(gp, X_test)
5-element Array{Float64,1}:
2.1522493172861914
1.298965158588743
0.8142639915894847
-0.7287701449385509
0.749523596826748
Документация на странице о GaussianProcesses.jl и в docstring о ?GPE
. Пример: Гауссовские процессы
Гауссовские процессы имеют множество гиперпараметров, список которых приведен в описании get_params(GP)
. Их можно настраивать.
DecisionTree.jl
-
DecisionTreeClassifier
-
DecisionTreeRegressor
-
RandomForestClassifier
-
RandomForestRegressor
-
AdaBoostStumpClassifier
Документация на странице о DecisionTree.jl. Примеры: записные книжки Сравнение классификаторов, Регрессия дерева принятия решений.
LowRankModels.jl
-
SkGLRM
: обобщенная низкоранговая модель -
PCA
: анализ главных компонентов -
QPCA
: квадратичный регуляризованный анализ главных компонентов -
RPCA
: надежный анализ главных компонентов -
NNMF
: неотрицательное матричное разложение -
KMeans
: алгоритм k-средних
Все эти алгоритмы являются частными случаями алгоритма обобщенной низкоранговой модели, основная цель которого — обеспечить гибкие потери и регуляризацию для разнородных данных. Специализированные алгоритмы в целом достигают более быстрой сходимости. Документация на странице о LowRankModels.jl. Пример: Классификация цифр методом k-средних. |
Участие в создании новых моделей
Чтобы ваша модель Julia была совместима с ScikitLearn.jl, нужно реализовать интерфейс scikit-learn. См. ScikitLearnBase.jl