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