Spec-Zone.ru › scikit-learn

Lasso

classsklearn.linear_model.Lasso(alpha=1.0, *, fit_intercept=True, precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state=None, selection='cyclic')[source]

Линейная модель, обученная с регуляризацией L1 (также известная как Lasso).

Целевая функция для Lasso:

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

Технически модель Lasso оптимизирует ту же целевую функцию, что и Elastic Net с l1_ratio=1.0 (без штрафа L2).

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

Параметры:
alphafloat, по умолчанию=1.0

Постоянная, которая умножает член L1, управляя силой регуляризации. alpha должно быть неотрицательным числом с плавающей точкой, т.е. в [0, inf).

Когда alpha = 0, целевая функция эквивалентна обычным наименьшим квадратам, решаемым объектом LinearRegression. По причинам численной устойчивости использование alpha = 0 с объектом Lasso не рекомендуется. Вместо этого следует использовать объект LinearRegression.

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

Вычислять ли свободный член для этой модели. Если установлено в False, свободный член не будет использоваться в расчётах (т.е. ожидается, что данные будут центрированы).

precomputebool или массив-подобный формы (n_features, n_features), по умолчанию=False

Использовать ли предварительно вычисленную матрицу Грама для ускорения расчётов. Матрица Грама также может быть передана в качестве аргумента. Для разреженных входных данных этот параметр всегда False для сохранения разреженности.

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

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

max_iterint, по умолчанию=1000

Максимальное число итераций.

tolfloat, по умолчанию=1e-4

Порог для оптимизации: если обновления меньше, чем tol, код оптимизации проверяет двойную разницу для оптимальности и продолжает до тех пор, пока она не станет меньше tol, см. Примечания ниже.

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

Если установлено в True, повторно используйте решение предыдущего вызова fit в качестве начального значения, в противном случае, просто стереть предыдущее решение. См. словарь.

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

Если установлено в True, принудительно устанавливает коэффициенты в положительные значения.

random_stateint, RandomState instance, по умолчанию=None

Семена генератора псевдослучайных чисел, которое выбирает случайный признак для обновления. Используется, когда selection == ‘random’. Передайте целое число для воспроизводимого результата при многократных вызовах функций. См. словарь.

selection{‘cyclic’, ‘random’}, по умолчанию=’cyclic’

Если установлено в ‘random’, каждый итерацию обновляется случайный коэффициент, а не последовательно по всем признакам, как по умолчанию. Это (установка в ‘random’) часто приводит к значительно более быстрому сходимости, особенно когда tol больше, чем 1e-4.

Атрибуты:
coef_ndarray формы (n_features,) или (n_targets, n_features)

Вектор параметров (w в формуле затрат).

dual_gap_float или массив формы (n_targets,)

При заданном alpha, двойные разницы в конце оптимизации, имеющие ту же форму, что и каждая наблюдение y.

sparse_coef_разреженная матрица формы (n_features, 1) или (n_targets, n_features)

Разреженное представление полученного coef_.

intercept_float или массив формы (n_targets,)

Свободный член в функции принятия решения.

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

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

n_features_in_int

Количество признаков, увиденных во время fit.

Добавлен в версии 0.24.

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, увиденных во время fit. Определяются только тогда, когда X имеет имена признаков, которые все являются строками.

Добавлен в версии 1.0.

См. также

lars_path

Путь регуляризации с использованием LARS.

lasso_path

Путь регуляризации с использованием Lasso.

LassoLars

Путь Lasso вдоль параметра регуляризации с использованием алгоритма LARS.

LassoCV

Параметр alpha Lasso с помощью перекрёстной проверки.

LassoLarsCV

Алгоритм наименьших углов Lasso с помощью перекрёстной проверки.

sklearn.decomposition.sparse_encode

Оценщик разреженных кодирования массивов.

Примечания

Алгоритм, используемый для обучения модели, — спуск по координатам.

Для избежания ненужного копирования памяти аргумент X метода fit должен быть непосредственно передан в виде непрерывного массива NumPy с фортран-порядком.

Регуляризация улучшает обусловленность задачи и снижает дисперсию оценок. Более крупные значения указывают на более сильную регуляризацию. Alpha соответствует 1 / (2C) в других линейных моделях, таких как LogisticRegression или LinearSVC. Если передается массив, то штрафы предполагаются специфическими для целевых значений. Поэтому их количество должно соответствовать.

Точные критерии остановки, основанные на tol следующие: сначала убедитесь, что максимальное изменение коэффициента, т.е. \(\max_j |w_j^{new} - w_j^{old}|\) меньше, чем tol раз максимального абсолютного коэффициента \(\max_j |w_j|\). Если это так, то дополнительно проверьте, меньше ли двойная разница, чем tol раз \(||y||_2^2 / n_{\text{samples}}\).

Целевое значение может быть двумерным массивом, что приводит к оптимизации следующей целевой функции:

(1 / (2 * n_samples)) * ||Y - XW||^2_F + alpha * ||W||_11

где \(||W||_{1,1}\) — сумма модулей матричных коэффициентов. Не следует путать с MultiTaskLasso, которая вместо этого штрафует норму \(L_{2,1}\) коэффициентов, что обеспечивает разреженность коэффициентов по строкам.

Примеры

>>> from sklearn import linear_model
>>> clf = linear_model.Lasso(alpha=0.1)
>>> clf.fit([[0,0], [1, 1], [2, 2]], [0, 1, 2])
Lasso(alpha=0.1)
>>> print(clf.coef_)
[0.85 0.  ]
>>> print(clf.intercept_)
0.15...
END_OF_DOCUMENT_MARKER
fit(X, y, sample_weight=None, check_input=True)[source]

Обучение модели с использованием итеративного метода.

Параметры:
X{ndarray, разреженная матрица, разреженный массив} формы (n_samples, n_features)

Данные.

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

yndarray формы (n_samples,) или (n_samples, n_targets)

Целевые значения. Будет приведено к типу данных X, если необходимо.

sample_weightчисло или массив-подобный объект формы (n_samples,), по умолчанию None

Веса выборки. Внутренне, вектор sample_weight будет масштабирован таким образом, чтобы сумма весов равнялась n_samples.

Добавлена в версии 0.23.

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

Разрешает пропустить проверку ввода. Не используйте этот параметр, если вы не знаете, что делаете.

Возвращает:
selfобъект

Обученная модель.

Примечания

Итеративный метод координатного спуска обрабатывает каждый столбец данных по отдельности. Поэтому он автоматически преобразует вход X в Fortran-непрерывный массив NumPy, если необходимо.

Для избежания перераспределения памяти рекомендуется сразу выделять начальные данные в памяти в указанном формате.

get_metadata_routing()[source]

Получить маршрутизацию метаданных для данного объекта.

Пожалуйста, обратитесь к Руководству пользователя для получения информации о работе механизма маршрутизации.

Возвращает:
routingMetadataRequest

Объект MetadataRequest, содержащий информацию о маршрутизации.

get_params(deep=True)[source]

Получить параметры данного оценщика.

Параметры:
deepbool, по умолчанию True

Если True, возвращает параметры этого оценщика и вложенных подобъектов, являющихся оценщиками.

Возвращает:
paramsdict

Названия параметров и соответствующие им значения.

staticpath(X, y, *, l1_ratio=0.5, 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, check_input=True, **params)[source]

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

Функция оптимизации эластичной сети меняется для задач с одним и несколькими выходами.

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

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-contiguous для избежания ненужного дублирования памяти. Если задача y имеет один выход, то X может быть разреженной.

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

Значения целевых переменных.

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

Число от 0 до 1, определяющее масштаб между l1 и l2 штрафами в эластичной сети. l1_ratio=1 соответствует Лассо.

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

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

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

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

alphasarray-like, по умолчанию=None

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

precompute‘auto’, bool или array-like формы (n_features, n_features), по умолчанию=’auto’

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

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

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

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

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

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

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

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

Уровень подробности.

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

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

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

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

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

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

**paramskwargs

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

Возвращаемые значения:
alphasndarray формы (n_alphas,)

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

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

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

dual_gapsndarray формы (n_alphas,)

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

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

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

См. также

MultiTaskElasticNet

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

MultiTaskElasticNetCV

Многозадачная модель L1/L2 эластичной сети с встроенной перекрестной проверкой.

ElasticNet

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

ElasticNetCV

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

Примечания

Для примера см. 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.78...,  0.56...],
        [ 0.        ,  1.12...,  0.61...],
        [-0.        , -2.12..., -1.12...],
        [ 0.        , 23.04..., 88.93...],
        [ 0.        , 10.63..., 41.56...]])
predict(X)[source]

Предсказание с использованием линейной модели.

Параметры:
Xarray-like или разреженная матрица, форма (n_samples, n_features)

Образцы.

Возвращаемые значения:
Cмассив, форма (n_samples,)

Возвращает предсказанные значения.

score(X, y, sample_weight=None)[source]

Возвращает коэффициент детерминации предсказания.

Коэффициент детерминации \(R^2\) определяется как \((1 - \frac{u}{v})\), где \(u\) — сумма квадратов остатков ((y_true - y_pred)** 2).sum() и \(v\) — общая сумма квадратов ((y_true - y_true.mean()) ** 2).sum(). Лучшее возможное значение равно 1.0, оно может быть отрицательным (потому что модель может быть произвольно хуже). Модель, которая всегда предсказывает ожидаемое значение y, не учитывая входные признаки, получит значение \(R^2\) равное 0.0.

Параметры:
Xarray-like of shape (n_samples, n_features)

Тестовые выборки. Для некоторых оценщиков это может быть предварительно вычисленная матрица ядер или список общих объектов вместо неё с формой (n_samples, n_samples_fitted), где n_samples_fitted — количество выборок, используемых при подгонке для оценщика.

yarray-like of shape (n_samples,) или (n_samples, n_outputs)

Истинные значения для X.

sample_weightarray-like of shape (n_samples,), по умолчанию=None

Веса выборок.

Возвращает:
scorefloat

\(R^2\) для self.predict(X) относительно y.

Примечания

Значение \(R^2\), используемое при вызове score для регрессора, использует multioutput='uniform_average' с версии 0.23, чтобы соответствовать значению по умолчанию для r2_score. Это влияет на метод score для всех регрессоров с несколькими выходами (за исключением MultiOutputRegressor).

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → Lasso[source]

Запрос метаданных, переданных методу fit.

Обратите внимание, что этот метод актуален только если enable_metadata_routing=True (см. sklearn.set_config). См. Руководство пользователя о том, как работает механизм маршрутизации.

Варианты для каждого параметра:

  • True: метаданные запрашиваются и передаются в fit при их наличии. Запрос игнорируется, если метаданных нет.
  • False: метаданные не запрашиваются, и мета-оценщик не передаст их в fit.
  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь их предоставит.
  • str: метаданные должны передаваться мета-оценщику под этим псевдонимом вместо оригинального имени.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняется существующий запрос. Это позволяет изменить запрос для некоторых параметров, а не для других.

Добавлена в версии 1.3.

Примечание

Этот метод актуален только в том случае, если данный оценщик используется в качестве под-оценщика мета-оценщика, например, внутри Pipeline. В противном случае он не оказывает влияния.

Параметры:
sample_weightstr, True, False, или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в fit.

Возвращает:
selfobject

Обновлённый объект.

set_params(**params)[source]

Устанавливает параметры этого оценщика.

Метод работает как с простыми оценщиками, так и с вложенными объектами (такими как Pipeline). Последние имеют параметры в формате <component>__<parameter>, чтобы можно было обновить каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр оценщика

Экземпляр оценщика.

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → Lasso[source]

Запрос метаданных, переданных в метод score.

Обратите внимание, что этот метод актуален только если enable_metadata_routing=True (см. sklearn.set_config). Пожалуйста, ознакомьтесь со Руководством пользователя по работе механизма маршрутизации.

Варианты для каждого параметра:

  • True: метаданные запрашиваются и передаются в score при их наличии. Запрос игнорируется, если метаданные отсутствуют.
  • False: метаданные не запрашиваются и мета-эстиматор не будет их передавать в score.
  • None: метаданные не запрашиваются, и мета-эстиматор выдаст ошибку, если пользователь их предоставит.
  • str: метаданные должны быть переданы мета-эстиматору под этим псевдонимом вместо оригинального названия.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняется существующий запрос. Это позволяет изменять запрос для некоторых параметров, а для других — нет.

Добавлен в версии 1.3.

Примечание

Этот метод актуален только если данный эстиматор используется как под-эстиматор мета-эстиматора, например, внутри Pipeline. В противном случае он не оказывает влияния.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в score.

Returns:
selfobject

Обновлённый объект.

propertysparse_coef_

Разреженное представление рассчитанных coef_.

Примеры из галереи

Основные изменения в релизе scikit-learn 1.4

Основные изменения в релизе scikit-learn 0.23

Восстановление томографического изображения с использованием L1-нормы (Lasso)

Совместный отбор признаков с помощью многозадачного Lasso

Модели на основе L1 для разреженных сигналов

Lasso для плотных и разреженных данных

Пример обычных наименьших квадратов (OLS)

© 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.html

Spec-Zone.ru

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