ElasticNetCV#
- класс sklearn.linear_model.ElasticNetCV(*, l1_ratio=0.5, eps=0.001, n_alphas='устаревший', альфы='warn', fit_intercept=True, precompute='auto', max_iter=1000, tol=0.0001, cv=None, copy_X=True, verbose=0, n_jobs=None, положительный=False, random_state=None, выбор='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 (т.е. Лассо) и меньше ближе к 0 (т.е. Ридж), как в[.1, .5, .7, .9, .95, .99, 1].- epsfloat, по умолчанию=1e-3
Длина пути.
eps=1e-3означает, чтоalpha_min / alpha_max = 1e-3.- n_alphasint, по умолчанию=100
Количество альфа-значений вдоль пути регуляризации, используемых для каждого l1_ratio.
Устарело с версии 1.7:
n_alphasбыл устаревшим в 1.7 и будет удалён в 1.9. Используйтеalphasвместо этого.- альфыarray-like или int, по умолчанию=None
Значения альфа для тестирования вдоль пути регуляризации, используемые для каждого l1_ratio. Если int,
alphasзначения генерируются автоматически. Если массивоподобный, список значений alpha для использования.Изменено в версии 1.7:
alphasпринимает целочисленное значение, что устраняет необходимость передачиn_alphas.Устарело с версии 1.7:
alphas=Noneбыл устаревшим в 1.7 и будет удален в 1.9, после чего значение по умолчанию будет установлено на 100.- fit_interceptbool, по умолчанию=True
Вычислять ли свободный член для этой модели. Если установлено false, свободный член не будет использоваться в вычислениях (т.е. ожидается, что данные центрированы).
- precompute'auto', bool или массив формы (n_features, n_features), по умолчанию='auto'
Использовать ли предварительно вычисленную матрицу Грама для ускорения вычислений. Если установлено в
'auto'пусть мы решим. Матрица Грама также может быть передана в качестве аргумента.- max_iterint, по умолчанию=1000
Максимальное количество итераций.
- tolfloat, по умолчанию=1e-4
Допуск для оптимизации: если обновления меньше или равны
tol, код оптимизации проверяет двойственный разрыв на оптимальность и продолжает работу, пока он не станет меньше или равенtol.- cvint, генератор перекрестной проверки или итерируемый объект, по умолчанию=None
Определяет стратегию разделения для перекрестной проверки. Возможные значения для cv:
None, чтобы использовать стандартную 5-кратную перекрестную проверку,
int, чтобы указать количество фолдов.
Итерируемый объект, возвращающий (обучающие, тестовые) разбиения в виде массивов индексов.
Для целочисленных/None входов,
KFoldиспользуется.Обратитесь Руководство пользователя для различных стратегий перекрестной проверки, которые можно использовать здесь.
Изменено в версии 0.22:
cvзначение по умолчанию, если None изменено с 3-кратного на 5-кратное.- copy_Xbool, по умолчанию=True
Если
True, X будет скопирован; иначе, он может быть перезаписан.- verbosebool или int, по умолчанию=0
Уровень детализации вывода.
- n_jobsint, default=None
Количество процессоров для использования во время перекрестной проверки.
Noneозначает 1, если только не вjoblib.parallel_backendконтекст.-1означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.- положительныйbool, по умолчанию=False
При установке значения
True, принудительно делает коэффициенты положительными.- random_stateint, экземпляр RandomState, по умолчанию=None
Сид псевдослучайного генератора чисел, который выбирает случайный признак для обновления. Используется, когда
selection== 'random'. Передайте int для воспроизводимого вывода при множественных вызовах функции. См. Глоссарий.- выбор{‘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
где k - эффективный ранг. Обычно
- n_iter_int
Количество итераций, выполняемых решателем координатного спуска для достижения указанного допуска для оптимального alpha.
- n_features_in_int
Количество признаков, замеченных во время fit.
Добавлено в версии 0.24.
- feature_names_in_ndarray формы (
n_features_in_,) Имена признаков, наблюдаемых во время fit. Определено только когда
Xимеет имена признаков, которые все являются строками.Добавлено в версии 1.0.
Смотрите также
enet_pathВычисление пути эластичной сети с координатным спуском.
ElasticNetЛинейная регрессия с комбинированными априорными распределениями L1 и L2 в качестве регуляризатора.
Примечания
В
fit, как только лучшие параметрыl1_ratioиalphaнаходятся с помощью перекрёстной проверки, модель снова обучается на всём обучающем наборе.Чтобы избежать ненужного дублирования памяти,
Xаргументfitметод должен быть передан непосредственно как массив numpy с непрерывной памятью в стиле Fortran.Параметр
l1_ratioсоответствует alpha в пакете glmnet R, в то время как 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 с координатным спуском.
Подгонка выполняется на сетке альфа, и лучшая альфа оценивается с помощью перекрестной проверки.
- Параметры:
- X{array-like, sparse matrix} формы (n_samples, n_features)
Обучающие данные. Передавайте непосредственно как Fortran-contiguous данные, чтобы избежать ненужного дублирования памяти. Если y имеет один выход, X может быть разреженным. Обратите внимание, что большие разреженные матрицы и массивы, требующие
int64индексы не принимаются.- yarray-like формы (n_samples,)
Целевые значения.
- sample_weightfloat или array-like формы (n_samples,), default=None
Веса выборок, используемые для обучения и оценки взвешенной среднеквадратичной ошибки каждого cv-фолда. Обратите внимание, что перекрёстно проверенная MSE, которая в итоге используется для поиска лучшей модели, является невзвешенным средним по (взвешенным) MSE каждого тестового фолда.
- **paramsdict, по умолчанию=None
Параметры, передаваемые разделителю CV.
Добавлено в версии 1.4: Доступно только если
enable_metadata_routing=True, который можно установить с помощьюsklearn.set_config(enable_metadata_routing=True). См. Руководство по маршрутизации метаданных для более подробной информации.
- Возвращает:
- selfobject
Возвращает экземпляр обученной модели.
- 6332()[источник]#
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.
Добавлено в версии 1.4.
- Возвращает:
- маршрутизацияMetadataRouter
A
MetadataRouterИнкапсуляция информации о маршрутизации.
- 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$') 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). Последние имеют параметры видачтобы можно было обновить каждый компонент вложенного объекта.__ - Параметры:
- **paramsdict
Параметры оценщика.
- Возвращает:
- selfэкземпляр estimator
Экземпляр оценщика.
- 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
Обновленный объект.