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объект
-
Обновлённый объект.
-
Примеры из галереи
© 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