ElasticNet#
- класс sklearn.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, положительный=False, random_state=None, выбор='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 соответствует штрафу лассо. В настоящее время 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
Следует ли оценивать свободный член (intercept) или нет. Если
False, данные предполагаются уже центрированными.- precomputebool или array-like формы (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 в качестве инициализации, в противном случае просто стереть предыдущее решение. См. Глоссарий.- положительныйbool, по умолчанию=False
При установке значения
True, принудительно делает коэффициенты положительными.- random_stateint, экземпляр RandomState, по умолчанию=None
Сид псевдослучайного генератора чисел, который выбирает случайный признак для обновления. Используется, когда
selection== 'random'. Передайте int для воспроизводимого вывода при множественных вызовах функции. См. Глоссарий.- выбор{‘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Модель эластичной сети с лучшим выбором модели путем перекрестной проверки.
SGDRegressorРеализует регрессию с эластичной сетью с инкрементальным обучением.
SGDClassifierРеализует логистическую регрессию с эластичной сетью штрафов (
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, sparse matrix, sparse array} формы (n_samples, n_features)
Данные.
Обратите внимание, что большие разреженные матрицы и массивы, требующие
int64индексы не принимаются.- yndarray формы (n_samples,) или (n_samples, n_targets)
Целевая переменная. Будет приведена к типу данных X при необходимости.
- sample_weightfloat или array-like формы (n_samples,), по умолчанию=None
Веса примеров. Внутренне,
sample_weightвектор будет перемасштабирован до суммыn_samples.Добавлено в версии 0.23.
- check_inputbool, по умолчанию=True
Позволяет обойти несколько проверок входных данных. Не используйте этот параметр, если не знаете, что делаете.
- Возвращает:
- selfobject
Обученный оценщик.
Примечания
Координатный спуск — это алгоритм, который рассматривает каждый столбец данных за раз, поэтому он автоматически преобразует входные данные X в массив numpy с порядком хранения Fortran, если это необходимо.
Чтобы избежать повторного выделения памяти, рекомендуется выделять начальные данные в памяти напрямую в этом формате.
- 6332()[источник]#
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.
- Возвращает:
- маршрутизацияMetadataRequest
A
MetadataRequestИнкапсуляция информации о маршрутизации.
- get_params(глубокий=True)[источник]#
Получить параметры для этого оценщика.
- Параметры:
- глубокийbool, по умолчанию=True
Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.
- Возвращает:
- paramsdict
Имена параметров, сопоставленные с их значениями.
- статический путь(X, y, *, l1_ratio=0.5, eps=0.001, n_alphas=100, альфы=None, precompute='auto', Xy=None, copy_X=True, coef_init=None, verbose=False, return_n_iter=False, положительный=False, check_input=True, **params)[источник]#
Вычисление пути эластичной сети с координатным спуском.
Функция оптимизации 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}
т.е. сумма норм каждой строки.
Подробнее в Руководство пользователя.
- Параметры:
- X{array-like, sparse matrix} формы (n_samples, n_features)
Обучающие данные. Передавайте непосредственно как данные с порядком хранения Fortran, чтобы избежать ненужного дублирования памяти. Если
yявляется моно-выходным, тогдаXможет быть разреженным.- y{array-like, sparse matrix} формы (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
Количество альфа вдоль пути регуляризации.
- альфыarray-like, default=None
Список альфа, для которых вычисляются модели. Если None, альфа устанавливаются автоматически.
- precompute'auto', bool или массив формы (n_features, n_features), по умолчанию='auto'
Использовать ли предварительно вычисленную матрицу Грама для ускорения вычислений. Если установлено в
'auto'пусть мы решим. Матрица Грама также может быть передана в качестве аргумента.- Xyarray-like формы (n_features,) или (n_features, n_targets), default=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
Возвращать ли количество итераций или нет.
- положительныйbool, по умолчанию=False
Если установлено в True, заставляет коэффициенты быть положительными. (Разрешено только когда
y.ndim == 1).- check_inputbool, по умолчанию=True
Если установлено значение False, проверки входных данных пропускаются (включая матрицу Грама, если она предоставлена). Предполагается, что они обрабатываются вызывающей стороной.
- **paramskwargs
Аргументы ключевых слов, передаваемые решателю координатного спуска.
- Возвращает:
- альфыndarray формы (n_alphas,)
Значения alphas вдоль пути, по которому вычисляются модели.
- coefsndarray формы (n_features, n_alphas) или (n_targets, n_features, n_alphas)
Коэффициенты вдоль пути.
- dual_gapsndarray формы (n_alphas,)
Двойные разрывы в конце оптимизации для каждого альфа.
- n_itersсписок целых чисел
Количество итераций, выполненных оптимизатором координатного спуска для достижения указанного допуска для каждого альфа. (Возвращается, когда
return_n_iterустановлено в True).
Смотрите также
MultiTaskElasticNetМногозадачная модель ElasticNet, обученная с L1/L2 смешанной нормой как регуляризатором.
MultiTaskElasticNetCVМногозадачный L1/L2 ElasticNet со встроенной кросс-валидацией.
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, n_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)
Образцы.
- Возвращает:
- Cмассив, формы (n_samples,)
Возвращает предсказанные значения.
- 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\) of
self.predict(X)относительноy.
Примечания
The \(R^2\) оценка, используемая при вызове
scoreна регрессоре используетmultioutput='uniform_average'с версии 0.23 для сохранения согласованности со значением по умолчанию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). Последние имеют параметры видачтобы можно было обновить каждый компонент вложенного объекта.__ - Параметры:
- **paramsdict
Параметры оценщика.
- Возвращает:
- selfэкземпляр estimator
Экземпляр оценщика.
- 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.
- Возвращает:
- selfobject
Обновленный объект.
Примеры галереи#
Обучение Elastic Net с предвычисленной матрицей Грама и взвешенными выборками
Влияние регуляризации модели на ошибку обучения и тестирования