lasso_path#

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

Вычислить путь Lasso с координатным спуском.

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

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

(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}

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

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

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

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

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

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

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

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

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

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

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

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

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

**paramskwargs

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

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

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

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

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

dual_gapsndarray формы (n_alphas,)

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

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

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

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

lars_path

Вычислить путь регрессии наименьших углов или Lasso с использованием алгоритма LARS.

Lasso

Lasso — это линейная модель, которая оценивает разреженные коэффициенты.

LassoLars

Модель Lasso, обученная с использованием метода наименьших углов, также известного как Lars.

LassoCV

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

LassoLarsCV

Перекрёстно проверенный Lasso с использованием алгоритма LARS.

sklearn.decomposition.sparse_encode

Оценщик, который может использоваться для преобразования сигналов в разреженную линейную комбинацию атомов из фиксированного.

Примечания

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

Чтобы избежать ненужного дублирования памяти, аргумент X метода fit должен передаваться напрямую как массив numpy с порядком Fortran.

Обратите внимание, что в некоторых случаях решатель Lars может быть значительно быстрее для реализации этой функциональности. В частности, линейная интерполяция может использоваться для получения коэффициентов модели между значениями, выводимыми lars_path.

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

Примеры

Сравнение 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]]