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]])