lasso_path
- sklearn.linear_model.lasso_path(X, y, *, eps=0.001, n_alphas=100, alphas=None, precompute='auto', Xy=None, copy_X=True, coef_init=None, verbose=False, return_n_iter=False, positive=False, **params)[source]
-
Вычисление пути Лассо с помощью метода координатного спуска.
Функция оптимизации Лассо отличается для задач с одним и несколькими выходами.
Для задач с одним выходом она имеет вид:
(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1
Для задач с несколькими выходами она имеет вид:
(1 / (2 * n_samples)) * ||Y - XW||^2_Fro + alpha * ||W||_21
Где:
||W||_21 = \sum_i \sqrt{\sum_j w_{ij}^2}т.е. сумма норм каждой строки.
Подробнее см. в Руководстве пользователя.
- Parameters:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Данные обучения. Передаются напрямую как данные в формате Fortran, чтобы избежать ненужного дублирования памяти. Если
yявляется одновыходной, тоXможет быть разреженной. - y{array-like, sparse matrix} of shape (n_samples,) or (n_samples, n_targets)
-
Значения целевой переменной.
- epsfloat, default=1e-3
-
Длина пути.
eps=1e-3означает, чтоalpha_min / alpha_max = 1e-3. - n_alphasint, default=100
-
Количество альфа-значений вдоль пути регуляризации.
- alphasarray-like, default=None
-
Список альфа-значений, для которых нужно вычислить модели. Если
Noneальфа-значения устанавливаются автоматически. - precompute‘auto’, bool or array-like of shape (n_features, n_features), default=’auto’
-
Использовать ли предварительно вычисленный Gram-матрицу для ускорения вычислений. Если установлено
'auto', пусть мы решим. Gram-матрица также может быть передана как аргумент. - Xyarray-like of shape (n_features,) or (n_features, n_targets), default=None
-
Xy = np.dot(X.T, y), которое можно предварительно вычислить. Оно полезно только при предварительном вычислении Gram-матрицы.
- copy_Xbool, default=True
-
Если
True, X будет скопирован; в противном случае он может быть перезаписан. - coef_initarray-like of shape (n_features, ), default=None
-
Начальные значения коэффициентов.
- verbosebool or int, default=False
-
Уровень подробности.
- return_n_iterbool, default=False
-
Возвращать ли количество итераций.
- positivebool, default=False
-
Если установлено в True, принудительно устанавливает коэффициенты положительными. (Допустимо только при
y.ndim == 1). - **paramskwargs
-
Дополнительные ключевые аргументы, передаваемые решателю координатного спуска.
- Returns:
-
- alphasndarray of shape (n_alphas,)
-
Альфа-значения вдоль пути, где вычисляются модели.
- coefsndarray of shape (n_features, n_alphas) or (n_targets, n_features, n_alphas)
-
Коэффициенты вдоль пути.
- dual_gapsndarray of shape (n_alphas,)
-
Двойные разрывы в конце оптимизации для каждого альфа-значения.
- n_iterslist of int
-
Количество итераций, выполняемых оптимизатором координатного спуска для достижения заданной точности для каждого альфа-значения.
См. также
lars_path-
Вычисление пути наименьших углов регрессии или пути Лассо с помощью алгоритма LARS.
Lasso-
Модель Лассо — линейная модель, оценивающая разреженные коэффициенты.
LassoLars-
Модель Лассо, обученная с помощью регрессии наименьших углов (Lars).
LassoCV-
Линейная модель Лассо с итеративным обучением вдоль пути регуляризации.
LassoLarsCV-
Перекрёстная проверка модели Лассо с помощью алгоритма LARS.
sklearn.decomposition.sparse_encode-
Оценщик, который можно использовать для преобразования сигналов в разрешённую линейную комбинацию атомов из фиксированного.
Notes
Для примера см. примеры/linear_model/plot_lasso_lasso_lars_elasticnet_path.py.
Для избежания ненужного дублирования памяти аргумент X метода fit должен быть передан напрямую как Fortran-непрерывная numpy-матрица.
Обратите внимание, что в некоторых случаях решатель Lars может быть значительно быстрее для реализации этой функциональности. В частности, для извлечения коэффициентов модели между значениями, выданными lars_path, можно использовать линейную интерполяцию.
Examples
Сравнение lasso_path и lars_path с интерполяцией:
>>> import numpy as np >>> from sklearn.linear_model import lasso_path >>> X = np.array([[1, 2, 3.1], [2.3, 5.4, 4.3]]).T >>> y = np.array([1, 2, 3.1]) >>> # Use lasso_path to compute a coefficient path >>> _, coef_path, _ = lasso_path(X, y, alphas=[5., 1., .5]) >>> print(coef_path) [[0. 0. 0.46874778] [0.2159048 0.4425765 0.23689075]]
>>> # Now use lars_path and 1D linear interpolation to compute the >>> # same path >>> from sklearn.linear_model import lars_path >>> alphas, active, coef_path_lars = lars_path(X, y, method='lasso') >>> from scipy import interpolate >>> coef_path_continuous = interpolate.interp1d(alphas[::-1], ... coef_path_lars[:, ::-1]) >>> print(coef_path_continuous([5., 1., .5])) [[0. 0. 0.46915237] [0.2159048 0.4425765 0.23668876]]
Gallery examples
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.lasso_path.html