HuberRegressor#

класс sklearn.linear_model.HuberRegressor(*, эпсилон=1.35, max_iter=100, alpha=0.0001, warm_start=False, fit_intercept=True, tol=1e-05)[источник]#

L2-регуляризованная линейная регрессионная модель, устойчивая к выбросам.

Регрессор Хубера оптимизирует квадратичную потерю для выборок, где |(y - Xw - c) / sigma| < epsilon и абсолютная потеря для выборок, где |(y - Xw - c) / sigma| > epsilon, где коэффициенты модели w, свободный член c и масштаб sigma являются параметрами для оптимизации. Параметр sigma гарантирует, что если y масштабируется вверх или вниз на определенный коэффициент, не требуется перемасштабировать epsilon для достижения той же устойчивости. Обратите внимание, что это не учитывает факт, что различные признаки X могут иметь разные масштабы.

Функция потерь Хубера имеет преимущество в том, что на нее не сильно влияют выбросы, но при этом она не полностью игнорирует их эффект.

Подробнее в Руководство пользователя

Добавлено в версии 0.18.

Параметры:
эпсилонfloat, по умолчанию=1.35

Параметр эпсилон контролирует количество образцов, которые должны быть классифицированы как выбросы. Чем меньше эпсилон, тем более устойчив он к выбросам. Эпсилон должен находиться в диапазоне [1, inf).

max_iterint, по умолчанию=100

Максимальное количество итераций, которое scipy.optimize.minimize(method="L-BFGS-B") должен выполняться.

alphafloat, по умолчанию=0.0001

Сила квадратичной L2-регуляризации. Обратите внимание, что штраф равен alpha * ||w||^2. Должно быть в диапазоне [0, inf).

warm_startbool, по умолчанию=False

Это полезно, если сохраненные атрибуты ранее использованной модели должны быть повторно использованы. Если установлено значение False, то коэффициенты будут перезаписаны при каждом вызове fit. См. Глоссарий.

fit_interceptbool, по умолчанию=True

Обучиться ли свободному члену. Это может быть установлено в False, если данные уже центрированы относительно начала координат.

tolfloat, по умолчанию=1e-05

Итерация остановится, когда max{|proj g_i | i = 1, ..., n} <= tol где pg_i — это i-я компонента проекции градиента.

Атрибуты:
coef_массив, форма (n_features,)

Признаки, полученные путем оптимизации L2-регуляризованной потери Хубера.

intercept_float

Смещение.

scale_float

Значение, на которое |y - Xw - c| масштабируется вниз.

n_features_in_int

Количество признаков, замеченных во время fit.

Добавлено в версии 0.24.

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, наблюдаемых во время fit. Определено только когда X имеет имена признаков, которые все являются строками.

Добавлено в версии 1.0.

n_iter_int

Количество итераций, которые scipy.optimize.minimize(method="L-BFGS-B") выполнялся.

Изменено в версии 0.20: В SciPy <= 1.0.0 количество итераций lbfgs может превышать max_iter. n_iter_ теперь будет сообщать не более max_iter.

выбросы_массив, формы (n_samples,)

Булева маска, которая устанавливается в True там, где образцы идентифицированы как выбросы.

Смотрите также

RANSACRegressor

Алгоритм RANSAC (RANdom SAmple Consensus).

TheilSenRegressor

Многомерная регрессионная модель Theil-Sen Estimator, устойчивая к выбросам.

SGDRegressor

Подгоняется путем минимизации регуляризованной эмпирической потери с помощью SGD.

Ссылки

[1]

Peter J. Huber, Elvezio M. Ronchetti, Robust Statistics Concomitant scale estimates, p. 172

Примеры

>>> import numpy as np
>>> from sklearn.linear_model import HuberRegressor, LinearRegression
>>> from sklearn.datasets import make_regression
>>> rng = np.random.RandomState(0)
>>> X, y, coef = make_regression(
...     n_samples=200, n_features=2, noise=4.0, coef=True, random_state=0)
>>> X[:4] = rng.uniform(10, 20, (4, 2))
>>> y[:4] = rng.uniform(10, 20, 4)
>>> huber = HuberRegressor().fit(X, y)
>>> huber.score(X, y)
-7.284
>>> huber.predict(X[:1,])
array([806.7200])
>>> linear = LinearRegression().fit(X, y)
>>> print("True coefficients:", coef)
True coefficients: [20.4923...  34.1698...]
>>> print("Huber coefficients:", huber.coef_)
Huber coefficients: [17.7906... 31.0106...]
>>> print("Linear Regression coefficients:", linear.coef_)
Linear Regression coefficients: [-1.9221...  7.0226...]
fit(X, y, sample_weight=None)[источник]#

Обучает модель на основе предоставленных обучающих данных.

Параметры:
Xarray-like, shape (n_samples, n_features)

Вектор обучения, где n_samples — это количество образцов и n_features это количество признаков.

yarray-like, shape (n_samples,)

Целевой вектор относительно X.

sample_weightarray-like, shape (n_samples,)

Вес, присвоенный каждому образцу.

Возвращает:
selfobject

Обученная HuberRegressor оценщик.

6332()[источник]#

Получить маршрутизацию метаданных этого объекта.

Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

Получить параметры для этого оценщика.

Параметры:
глубокийbool, по умолчанию=True

Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.

Возвращает:
paramsdict

Имена параметров, сопоставленные с их значениями.

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$') HuberRegressor[источник]#

Настроить, следует ли запрашивать передачу метаданных в 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$') HuberRegressor[источник]#

Настроить, следует ли запрашивать передачу метаданных в 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

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