Spec-Zone.ru › scikit-learn

ElasticNet

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

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

Минимизирует целевую функцию:

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

Если вы хотите контролировать L1 и L2 штрафы отдельно, имейте в виду, что это эквивалентно:

a * ||w||_1 + 0.5 * b * ||w||_2^2

где:

alpha = a + b and l1_ratio = a / (a + b)

Параметр l1_ratio соответствует alpha в пакете glmnet R, а alpha соответствует параметру lambda в glmnet. В частности, l1_ratio = 1 соответствует штрафу lasso. В настоящее время l1_ratio <= 0.01 ненадежен, если вы не предоставите свою собственную последовательность alpha.

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

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

Постоянная, которая умножает члены штрафа. По умолчанию 1.0. См. примечания для точного математического значения этого параметра. alpha = 0 эквивалентен обычной регрессии наименьших квадратов, решаемой с помощью объекта LinearRegression. По причинам вычислений использование alpha = 0 с объектом Lasso не рекомендуется. Учитывая это, вы должны использовать объект LinearRegression.

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

Параметр смешения ElasticNet, с 0 <= l1_ratio <= 1. Для l1_ratio = 0 штраф является L2 штрафом. For l1_ratio = 1 это L1 штраф. Для 0 < l1_ratio < 1 штраф является комбинацией L1 и L2.

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

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

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

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

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

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

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

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

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 в формуле функции стоимости).

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

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

intercept_float или ndarray размерности (n_targets,)

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

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

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

dual_gap_float или ndarray размерности (n_targets,)

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

n_features_in_int

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

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

feature_names_in_ndarray размерности (n_features_in_,)

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

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

См. также

ElasticNetCV

Модель Elastic net с лучшим выбором модели с помощью перекрестной проверки.

SGDRegressor

Реализует регрессию с elastic net штрафом с инкрементальной обучающей выборкой.

SGDClassifier

Реализует логистическую регрессию с штрафом elastic net (SGDClassifier(loss="log_loss", penalty="elasticnet")).

Примечания

Для предотвращения ненужного дублирования памяти аргумент X метода fit должен быть непосредственно передан в виде Fortran-непрерывного массива numpy.

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

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

Примеры

>>> from sklearn.linear_model import ElasticNet
>>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_features=2, random_state=0)
>>> regr = ElasticNet(random_state=0)
>>> regr.fit(X, y)
ElasticNet(random_state=0)
>>> print(regr.coef_)
[18.83816048 64.55968825]
>>> print(regr.intercept_)
1.451...
>>> print(regr.predict([[0, 0]]))
[1.451...]
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_weightfloat или массив-подобный размерности (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)

Данные обучения. Передавайте напрямую как данные с фортрановской непрерывностью, чтобы избежать ненужного дублирования памяти. Если 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’

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

Xyarray-like формы (n_features,) или (n_features, n_targets), по умолчанию=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

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

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

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

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

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

**paramskwargs

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

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

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

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

Коэффициенты на пути.

dual_gapsndarray формы (n_alphas,)

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

n_iterslist целых чисел

Количество итераций, выполненных оптимизатором метода координатного спуска для достижения заданной толерантности для каждого альфа. (Возвращается, когда 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,) or (n_samples, n_outputs)

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

sample_weightarray-like of shape (n_samples,), default=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$') → ElasticNet[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, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

set_params(**params)[source]

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

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

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

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

Возвращает:
selfestimator instance

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

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → ElasticNet[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 0.23

Обучение Elastic Net с предварительно вычисленной матрицей Грама и взвешенными выборками

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

Влияние регуляризации модели на ошибку обучения и проверки

Обучение Elastic Net с предварительно вычисленной матрицей Грама и взвешенными выборками

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.ElasticNet.html

Spec-Zone.ru

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