enet_path#

sklearn.linear_model.enet_path(X, y, *, l1_ratio=0.5, eps=0.001, n_alphas=100, альфы=None, precompute='auto', Xy=None, copy_X=True, coef_init=None, verbose=False, return_n_iter=False, положительный=False, check_input=True, **params)[источник]#

Вычисление пути эластичной сети с координатным спуском.

Функция оптимизации elastic net различается для одно- и многомерных выходов.

Для задач с одним выходом это:

1 / (2 * n_samples) * ||y - Xw||^2_2
+ alpha * l1_ratio * ||w||_1
+ 0.5 * alpha * (1 - l1_ratio) * ||w||^2_2

Для многозадачных задач это:

(1 / (2 * n_samples)) * ||Y - XW||_Fro^2
+ alpha * l1_ratio * ||W||_21
+ 0.5 * alpha * (1 - l1_ratio) * ||W||_Fro^2

Где:

||W||_21 = \sum_i \sqrt{\sum_j w_{ij}^2}

т.е. сумма норм каждой строки.

Подробнее в Руководство пользователя.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Обучающие данные. Передавайте непосредственно как данные с порядком хранения Fortran, чтобы избежать ненужного дублирования памяти. Если y является моно-выходным, тогда X может быть разреженным.

y{array-like, sparse matrix} формы (n_samples,) или (n_samples, n_targets)

Целевые значения.

l1_ratiofloat, по умолчанию=0.5

Число от 0 до 1, передаваемое в elastic net (масштабирование между штрафами l1 и l2). l1_ratio=1 соответствует Lasso.

epsfloat, по умолчанию=1e-3

Длина пути. eps=1e-3 означает, что alpha_min / alpha_max = 1e-3.

n_alphasint, по умолчанию=100

Количество альфа вдоль пути регуляризации.

альфыarray-like, default=None

Список альфа, для которых вычисляются модели. Если None, альфа устанавливаются автоматически.

precompute'auto', bool или массив формы (n_features, n_features), по умолчанию='auto'

Использовать ли предварительно вычисленную матрицу Грама для ускорения вычислений. Если установлено в 'auto' пусть мы решим. Матрица Грама также может быть передана в качестве аргумента.

Xyarray-like формы (n_features,) или (n_features, n_targets), default=None

Xy = np.dot(X.T, y), который может быть предварительно вычислен. Это полезно только когда матрица Грама предварительно вычислена.

copy_Xbool, по умолчанию=True

Если True, X будет скопирован; иначе, он может быть перезаписан.

coef_initarray-like формы (n_features, ), по умолчанию=None

Начальные значения коэффициентов.

verbosebool или int, по умолчанию=False

Уровень детализации вывода.

return_n_iterbool, по умолчанию=False

Возвращать ли количество итераций или нет.

положительныйbool, по умолчанию=False

Если установлено в True, заставляет коэффициенты быть положительными. (Разрешено только когда y.ndim == 1).

check_inputbool, по умолчанию=True

Если установлено значение False, проверки входных данных пропускаются (включая матрицу Грама, если она предоставлена). Предполагается, что они обрабатываются вызывающей стороной.

**paramskwargs

Аргументы ключевых слов, передаваемые решателю координатного спуска.

Возвращает:
альфыndarray формы (n_alphas,)

Значения alphas вдоль пути, по которому вычисляются модели.

coefsndarray формы (n_features, n_alphas) или (n_targets, n_features, n_alphas)

Коэффициенты вдоль пути.

dual_gapsndarray формы (n_alphas,)

Двойные разрывы в конце оптимизации для каждого альфа.

n_itersсписок целых чисел

Количество итераций, выполненных оптимизатором координатного спуска для достижения указанного допуска для каждого альфа. (Возвращается, когда return_n_iter установлено в True).

Смотрите также

MultiTaskElasticNet

Многозадачная модель ElasticNet, обученная с L1/L2 смешанной нормой как регуляризатором.

MultiTaskElasticNetCV

Многозадачный L1/L2 ElasticNet со встроенной кросс-валидацией.

ElasticNet

Линейная регрессия с комбинированными априорными распределениями L1 и L2 в качестве регуляризатора.

ElasticNetCV

Модель Elastic Net с итеративной подгонкой вдоль пути регуляризации.

Примечания

Пример см. в examples/linear_model/plot_lasso_lasso_lars_elasticnet_path.py.

Базовый решатель координатного спуска использует правила безопасного скрининга с зазором для ускорения времени подгонки, см. Руководство пользователя по координатному спуску.

Примеры

>>> from sklearn.linear_model import enet_path
>>> from sklearn.datasets import make_regression
>>> X, y, true_coef = make_regression(
...    n_samples=100, n_features=5, n_informative=2, coef=True, random_state=0
... )
>>> true_coef
array([ 0.        ,  0.        ,  0.        , 97.9, 45.7])
>>> alphas, estimated_coef, _ = enet_path(X, y, n_alphas=3)
>>> alphas.shape
(3,)
>>> estimated_coef
 array([[ 0.,  0.787,  0.568],
        [ 0.,  1.120,  0.620],
        [-0., -2.129, -1.128],
        [ 0., 23.046, 88.939],
        [ 0., 10.637, 41.566]])