Spec-Zone.ru › scikit-learn

HuberRegressor

classsklearn.linear_model.HuberRegressor(*, epsilon=1.35, max_iter=100, alpha=0.0001, warm_start=False, fit_intercept=True, tol=1e-05)[source]

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

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

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

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

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

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

Параметр epsilon управляет количеством выборок, которые следует классифицировать как выбросы. Чем меньше epsilon, тем более устойчив он к выбросам. Epsilon должен находиться в диапазоне [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_массив формы (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.

outliers_массив, форма (n_samples,)

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

См. также

RANSACRegressor

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

TheilSenRegressor

Модель регрессии устойчивого многомерного регрессора Тельсена.

SGDRegressor

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

Ссылки

[1]

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

[2]

Art B. Owen (2006), A robust hybrid of lasso and ridge regression.

Примеры

>>> 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)[source]

Обучить модель по заданным обучающим данным.

Параметры:
Xмассив, форма (n_samples, n_features)

Вектор обучающих данных, где n_samples — количество выборок, а n_features — количество признаков.

yмассив, форма (n_samples,)

Вектор целевых значений, связанных с X.

sample_weightмассив, форма (n_samples,)

Вес каждой выборки.

Возвращает:
selfобъект

Обученный HuberRegressor оценщик.

get_metadata_routing()[source]

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

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

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

MetadataRequest объект, содержащий информацию о маршрутизации.

get_params(deep=True)[source]

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

Параметры:
deepbool, по умолчанию=True

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

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

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

predict(X)[source]

Предсказание с помощью линейной модели.

Параметры:
Xмассив или разреженная матрица, форма (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 формы (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\) 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$') → HuberRegressor[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, или None, по умолчанию sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в fit.

Возвращаемое значение:
selfobject

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

set_params(**params)[source]

Устанавливает параметры этого оценщика.

Метод работает с простыми оценщиками, а также со вложенными объектами (такими как Pipeline). Последние имеют параметры вида <component>__<parameter>, чтобы можно было обновлять каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращаемое значение:
selfэкземпляр оценщика

Экземпляр оценщика.

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → HuberRegressor[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

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

Примеры из галереи

HuberRegressor против Ridge на наборе данных с сильными выбросами

Коэффициенты Ridge в зависимости от регуляризации L2

Адаптация линейной модели с помощью робастного подхода

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.HuberRegressor.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API