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...
- 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_.
Примеры из галереи
© 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