Spec-Zone.ru › scikit-learn

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

Пути Лассо, Лассо-LARS и Эластичной сети

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API