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]
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

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