ElasticNetCV
- classsklearn.linear_model.ElasticNetCV(*, l1_ratio=0.5, eps=0.001, alphas=100, fit_intercept=True, precompute='auto', max_iter=1000, tol=0.0001, cv=None, copy_X=True, verbose=0, n_jobs=None, positive=False, random_state=None, selection='cyclic')[источник]
-
Модель Elastic Net с итеративным обучением вдоль пути регуляризации.
См. статью глоссария о оценивателе с перекрёстной проверкой.
Подробнее см. в руководстве пользователя.
- Параметры:
-
- l1_ratiofloat или список float, по умолчанию=0.5
-
Число с плавающей запятой от 0 до 1, передаваемое в ElasticNet (масштабирование между штрафами l1 и l2). Для
l1_ratio = 0используется штраф L2. Дляl1_ratio = 1используется штраф L1. Для0 < l1_ratio < 1используется сочетание штрафов L1 и L2. Этот параметр может быть списком; в таком случае различные значения проверяются с помощью перекрёстной проверки, и используется значение, обеспечивающее наилучшую оценку предсказания. Обратите внимание, что хороший список значений l1_ratio часто содержит больше значений, близких к 1 (то есть Lasso), и меньше значений, близких к 0 (то есть Ridge), как в[.1, .5, .7, .9, .95, .99, 1]. - epsfloat, по умолчанию=1e-3
-
Длина пути.
eps=1e-3означает, чтоalpha_min / alpha_max = 1e-3. - alphasarray-like или int, по умолчанию=100
-
Значения alpha для проверки вдоль пути регуляризации, используемые для каждого l1_ratio. Если указано целое число,
alphasзначения генерируются автоматически. Если указано array-like, используется список значений alpha.Изменено в версии 1.7:
alphasпринимает целочисленное значение, поэтому передаватьn_alphasбольше не требуется. - fit_interceptbool, по умолчанию=True
-
Вычислять ли свободный член для этой модели. Если задано значение false, при вычислениях свободный член не используется (то есть предполагается, что данные центрированы).
- precompute‘auto’, bool или array-like формы (n_features, n_features), по умолчанию=’auto’
-
Использовать ли предварительно вычисленную матрицу Грама для ускорения вычислений. Если задано
'auto', решение принимается автоматически. Матрицу Грама также можно передать в качестве аргумента. - max_iterint, по умолчанию=1000
-
Максимальное количество итераций.
- tolfloat, по умолчанию=1e-4
-
Допуск оптимизации: если изменения меньше или равны
tol, код оптимизации проверяет двойственный разрыв на оптимальность и продолжает работу, пока он не станет меньше или равенtol. - cvint, генератор перекрёстной проверки или итерируемый объект, по умолчанию=None
-
Определяет стратегию разбиения для перекрёстной проверки. Возможные значения cv:
- None — использовать перекрёстную проверку по 5 фолдам по умолчанию,
- int — задать количество фолдов,
- разбиватель перекрёстной проверки,
- итерируемый объект, возвращающий разбиения (train, test) в виде массивов индексов.
Для значений int/None используется
KFold.Различные стратегии перекрёстной проверки, которые можно использовать здесь, описаны в руководстве пользователя.
Изменено в версии 0.22:
cvзначение по умолчанию для None изменено с 3 фолдов на 5. - copy_Xbool, по умолчанию=True
-
Если
True, X будет скопирован; в противном случае он может быть перезаписан. - verbosebool или int, по умолчанию=0
-
Уровень подробности вывода.
- n_jobsint, по умолчанию=None
-
Количество процессоров, используемых при перекрёстной проверке.
Noneозначает 1, кроме случаев, когда используется контекстjoblib.parallel_backend.-1означает использование всех процессоров. Подробнее см. в глоссарии. - positivebool, по умолчанию=False
-
Если задано значение
True, коэффициенты принудительно становятся положительными. - random_stateint, экземпляр RandomState, по умолчанию=None
-
Начальное значение генератора псевдослучайных чисел, который выбирает случайный признак для обновления. Используется, когда
selection== ‘random’. Передайте int, чтобы получать воспроизводимый результат при нескольких вызовах функции. См. глоссарий. - selection{‘cyclic’, ‘random’}, по умолчанию=’cyclic’
-
Если задано значение ‘random’, на каждой итерации обновляется случайный коэффициент, а не выполняется последовательный перебор признаков, используемый по умолчанию. Такой режим (‘random’) часто обеспечивает значительно более быструю сходимость, особенно если tol больше 1e-4.
- Атрибуты:
-
- alpha_float
-
Величина регуляризации, выбранная с помощью перекрёстной проверки.
- l1_ratio_float
-
Соотношение штрафов l1 и l2, выбранное с помощью перекрёстной проверки.
- coef_ndarray формы (n_features,) или (n_targets, n_features)
-
Вектор параметров (w в формуле функции потерь).
- intercept_float или ndarray формы (n_targets, n_features)
-
Свободный член в функции принятия решения.
- mse_path_ndarray формы (n_l1_ratio, n_alpha, n_folds)
-
Среднеквадратичная ошибка на тестовом наборе для каждого фолда при различных значениях l1_ratio и alpha.
- alphas_ndarray формы (n_alphas,) или (n_l1_ratio, n_alphas)
-
Сетка значений alpha, использованных при обучении для каждого l1_ratio.
- dual_gap_float
-
Двойственный разрыв в конце оптимизации для оптимального значения alpha.
- n_iter_int
-
Количество итераций, выполненных решателем координатного спуска для достижения заданного допуска при оптимальном значении alpha.
- n_features_in_int
-
Количество признаков, обнаруженных во время обучения.
Добавлено в версии 0.24.
-
feature_names_in_ndarray формы (
n_features_in_,) -
Имена признаков, обнаруженных во время обучения. Определяется только в том случае, если
Xсодержит имена признаков, состоящие из строк.Добавлено в версии 1.0.
См. также
enet_path-
Вычисление пути Elastic Net с помощью координатного спуска.
ElasticNet-
Линейная регрессия с комбинированными априорными распределениями L1 и L2 в качестве регуляризатора.
Примечания
В
fitпосле того, как с помощью перекрёстной проверки найдены наилучшие параметрыl1_ratioиalpha, модель повторно обучается на всём обучающем наборе.Чтобы избежать ненужного дублирования памяти, аргумент
Xметодаfitследует передавать напрямую в виде массива numpy с порядком Fortran.Параметр
l1_ratioсоответствует alpha в пакете R glmnet, а alpha соответствует параметру lambda в glmnet. В частности, целевая функция оптимизации имеет вид: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 * L1 + b * L2
для:
alpha = a + b and l1_ratio = a / (a + b).
Пример см. в examples/linear_model/plot_lasso_model_selection.py.
В основе решателя координатного спуска лежат правила безопасного отсева по двойственному разрыву, ускоряющие обучение; см. руководство пользователя по координатному спуску.
Примеры
>>> from sklearn.linear_model import ElasticNetCV >>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_features=2, random_state=0) >>> regr = ElasticNetCV(cv=5, random_state=0) >>> regr.fit(X, y) ElasticNetCV(cv=5, random_state=0) >>> print(regr.alpha_) 0.199 >>> print(regr.intercept_) 0.398 >>> print(regr.predict([[0, 0]])) [0.398]
- fit(X, y, sample_weight=None, **params)[источник]
-
Обучение модели ElasticNet методом координатного спуска.
Обучение проводится на сетке значений alpha, а наилучшее значение alpha оценивается с помощью перекрёстной проверки.
- Параметры:
-
- X{array-like, разреженная матрица} формы (n_samples, n_features)
-
Обучающие данные. Чтобы избежать ненужного дублирования памяти, передавайте данные напрямую с порядком Fortran. Если y содержит одну целевую переменную, X может быть разреженным. Обратите внимание, что большие разреженные матрицы и массивы, требующие
int64индексов, не поддерживаются. - yarray-like формы (n_samples,)
-
Целевые значения.
- sample_weightfloat или array-like формы (n_samples,), по умолчанию=None
-
Веса объектов, используемые при обучении и вычислении взвешенной среднеквадратичной ошибки для каждого фолда перекрёстной проверки. Обратите внимание, что итоговая среднеквадратичная ошибка с перекрёстной проверкой, используемая для выбора наилучшей модели, представляет собой невзвешенное среднее взвешенных среднеквадратичных ошибок каждого тестового фолда.
- **paramsdict, по умолчанию=None
-
Параметры, передаваемые разбивателю перекрёстной проверки.
Добавлено в версии 1.4: Доступно только если включена
enable_metadata_routing=True, которую можно настроить с помощьюsklearn.set_config(enable_metadata_routing=True). Подробнее см. в руководстве пользователя по маршрутизации метаданных.
- Возвращает:
-
- selfobject
-
Возвращает экземпляр обученной модели.
- get_metadata_routing()[источник]
-
Получить маршрутизацию метаданных этого объекта.
Подробнее о работе механизма маршрутизации см. в руководстве пользователя.
Добавлено в версии 1.4.
- Возвращает:
-
- routingMetadataRouter
-
Объект
MetadataRouter, содержащий сведения о маршрутизации.
- 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{array-like, разреженная матрица} формы (n_samples, n_features)
-
Обучающие данные. Чтобы избежать ненужного дублирования памяти, передавайте данные напрямую с порядком Fortran. Если
yсодержит одну выходную переменную,Xможет быть разреженным. - y{array-like, разреженная матрица} формы (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 вдоль пути регуляризации.
- alphasarray-like, по умолчанию=None
-
Список значений alpha, для которых вычисляются модели. Если указано None, значения alpha задаются автоматически.
- 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,)
-
Значения 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)[источник]
-
Предсказание с помощью линейной модели.
- Параметры:
-
- Xarray-like или разреженная матрица формы (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.- Параметры:
-
- Xarray-like формы (n_samples, n_features)
-
Тестовые образцы. Для некоторых оценивателей это может быть предварительно вычисленная матрица ядра или список обобщённых объектов формы
(n_samples, n_samples_fitted), гдеn_samples_fitted— количество образцов, использованных при обучении оценивателя. - yarray-like формы (n_samples,) или (n_samples, n_outputs)
-
Истинные значения для
X. - sample_weightarray-like формы (n_samples,), по умолчанию=None
-
Веса образцов.
- Возвращает:
-
- scorefloat
-
Оценка \(R^2\) для
self.predict(X)относительноy.
Примечания
Оценка \(R^2\), используемая при вызове
scoreдля регрессора, начиная с версии 0.23 используетmultioutput='uniform_average', чтобы соответствовать значению по умолчаниюr2_score. Это влияет на методscoreвсех регрессоров с несколькими выходами (за исключениемMultiOutputRegressor).
- set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') ElasticNetCV[исходный код]
-
Настройка запроса на передачу метаданных методу
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$') ElasticNetCV[исходный код]
-
Настройка запроса на передачу метаданных методу
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.
- Возвращает:
-
- selfobject
-
Обновлённый объект.
-
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.linear_model.ElasticNetCV.html