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')[исходный код]

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

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

\[\frac{1}{2 n_{\rm samples}} \cdot \|y - X w\|_2^2 + \alpha \cdot {\rm l1\_{ratio}} \cdot \|w\|_1 + 0.5 \cdot \alpha \cdot (1 - {\rm l1\_{ratio}}) \cdot \|w\|_2^2\]

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

\[a \cdot \|w\|_1 + 0.5 \cdot b \cdot \|w\|_2^2\]

где:

\[\alpha = a + b, \quad {\rm l1\_{ratio}} = \frac{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, по умолчанию=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_список int

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

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 следует напрямую передавать как массив numpy с порядком хранения Fortran.

Точные критерии остановки на основе tol следующие: сначала проверяется, что максимальное обновление координаты, то есть \(\max_j |w_j^{new} - w_j^{old}|\), меньше или равно tol, умноженному на максимальный абсолютный коэффициент \(\max_j |w_j|\). Если это условие выполнено, дополнительно проверяется, что двойственный разрыв меньше или равен tol, умноженному на \(||y||_2^2 / n_{\text{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]
  • Модели на основе L1 для разреженных сигналов демонстрирует ElasticNet наряду с Lasso и ARD Regression для восстановления разреженных сигналов при наличии шума и корреляции признаков.
fit(X, y, sample_weight=None, check_input=True)[исходный код]

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

Параметры:
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

Позволяет пропустить несколько проверок входных данных. Не используйте этот параметр, если не уверены в своих действиях.

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

Обученный оценщик.

Примечания

Координатный спуск — это алгоритм, который за один раз рассматривает каждый столбец данных, поэтому при необходимости он автоматически преобразует входной массив X в массив numpy с порядком хранения Fortran.

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

get_metadata_routing()[исходный код]

Возвращает настройки маршрутизации метаданных этого объекта.

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

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

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

get_params(deep=True)[исходный код]

Возвращает параметры этого оценщика.

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

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

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

Имена параметров, сопоставленные их значениям.

staticpath(X, y, *, l1_ratio=0.5, eps=0.001, n_alphas='deprecated', alphas='warn', precompute='auto', Xy=None, copy_X=True, coef_init=None, verbose=False, return_n_iter=False, positive=False, check_input=True, **params)[исходный код]

Вычисляет путь Elastic Net методом координатного спуска.

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

Для задач с одной целевой переменной она имеет вид:

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}

то есть сумма L2-норм каждой строки (задачи) (i — признак, j — задача)

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

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

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

y{массивоподобный объект, разреженная матрица} формы (n_samples,) или (n_samples, n_targets)

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

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

Число от 0 до 1, передаваемое в Elastic Net (задаёт соотношение штрафов L1 и L2). l1_ratio=1 соответствует Lasso.

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

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

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

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

alphasмассивоподобный объект, по умолчанию=None

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

precompute‘auto’, bool или массивоподобный объект формы (n_features, n_features), по умолчанию=’auto’

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

Xyмассивоподобный объект формы (n_features,) или (n_features, n_targets), по умолчанию=None

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

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

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

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

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

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

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

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

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

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

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

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

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

**paramskwargs

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

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

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

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

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

dual_gapsndarray формы (n_alphas,)

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

n_itersсписок int

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

См. также

MultiTaskElasticNet

Модель многозадачного ElasticNet, обученная с регуляризацией смешанной нормой L1/L2.

MultiTaskElasticNetCV

Многозадачный ElasticNet L1/L2 со встроенной перекрёстной проверкой.

ElasticNet

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

ElasticNetCV

Модель Elastic Net с итеративным обучением вдоль пути регуляризации.

Примечания

Пример см. в разделе 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, alphas=3)
>>> alphas.shape
(3,)
>>> estimated_coef
 array([[ 0.,  0.787,  0.568],
        [ 0.,  1.120,  0.620],
        [-0., -2.129, -1.128],
        [ 0., 23.046, 88.939],
        [ 0., 10.637, 41.566]])
predict(X)[исходный код]

Выполняет предсказание с помощью линейной модели.

Параметры:
Xмассивоподобный объект или разреженная матрица формы (n_samples, n_features)

Образцы.

Возвращает:
Cndarray формы (n_samples,) или (n_samples, n_outputs)

Предсказанные значения.

score(X, y, sample_weight=None)[исходный код]

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

Коэффициент детерминации \(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.

Параметры:
Xмассивоподобный объект формы (n_samples, n_features)

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

yмассивоподобный объект формы (n_samples,) или (n_samples, n_outputs)

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

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

Веса образцов.

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

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

Примечания

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

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → ElasticNet[исходный код]

Настраивает, следует ли запрашивать передачу метаданных методу fit.

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

Для каждого параметра доступны следующие варианты:

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

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

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

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

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

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

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

set_params(**params)[исходный код]

Задать параметры этого оценивателя.

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

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

Параметры оценивателя.

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

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

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → ElasticNet[исходный код]

Настроить, следует ли запрашивать передачу метаданных методу score.

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

Для каждого параметра доступны следующие варианты:

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

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

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

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

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

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

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

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

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

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

Влияние регуляризации модели на ошибку на обучающих и тестовых данных

Основные нововведения в scikit-learn 0.23

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

Spec-Zone.ru

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