HuberRegressor
- classsklearn.linear_model.HuberRegressor(*, epsilon=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.
- Параметры:
-
- 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_array, shape (n_features,)
-
Признаки, полученные при оптимизации функции потерь Хьюбера с L2-регуляризацией.
- intercept_float
-
Смещение.
- scale_float
-
Значение, на которое уменьшается масштаб
|y - Xw - c|. - n_features_in_int
-
Количество признаков, обнаруженных при обучении.
Добавлено в версии 0.24.
-
feature_names_in_ndarray размера (
n_features_in_,) -
Названия признаков, обнаруженных при обучении. Определяется только в том случае, если
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_array, shape (n_samples,)
-
Булева маска, принимающая значение True для выборок, распознанных как выбросы.
См. также
RANSACRegressor-
Алгоритм RANSAC (RANdom SAmple Consensus).
TheilSenRegressor-
Устойчивая многомерная регрессионная модель оценщика Тейла — Сена.
SGDRegressor-
Обучается путём минимизации регуляризованной эмпирической функции потерь с помощью SGD.
Литература
[1]Peter J. Huber, Elvezio M. Ronchetti, Robust Statistics Concomitant scale estimates, с. 172
[2]Art B. Owen (2006), Устойчивая гибридная модель регрессии лассо и гребневой регрессии.
Примеры
>>> 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)[исходный код]
-
Обучить модель на заданных обучающих данных.
- Параметры:
-
- Xмассивоподобный объект, shape (n_samples, n_features)
-
Обучающий вектор, где
n_samples— количество выборок, аn_features— количество признаков. - yмассивоподобный объект, shape (n_samples,)
-
Целевой вектор, соответствующий X.
- sample_weightмассивоподобный объект, shape (n_samples,)
-
Вес, назначенный каждой выборке.
- Возвращает:
-
- selfobject
-
Обученный оценщик
HuberRegressor.
- get_metadata_routing()[исходный код]
-
Получить настройки маршрутизации метаданных этого объекта.
Информацию о работе механизма маршрутизации см. в Руководстве пользователя.
- Возвращает:
-
- routingMetadataRequest
-
Объект
MetadataRequest, содержащий сведения о маршрутизации.
- get_params(deep=True)[исходный код]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, по умолчанию=True
-
Если True, будут возвращены параметры этого оценщика, а также содержащихся в нём объектов-оценщиков.
- Возвращает:
-
- paramsdict
-
Названия параметров, сопоставленные с их значениями.
- predict(X)[исходный код]
-
Выполнить предсказание с помощью линейной модели.
- Параметры:
-
- Xмассивоподобный объект или разреженная матрица формы (n_samples, n_features)
-
Выборки.
- Возвращает:
-
- Cndarray размера (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.- Параметры:
-
- Xмассивоподобный объект размера (n_samples, n_features)
-
Тестовые выборки. Для некоторых оценщиков вместо этого могут использоваться предварительно вычисленная матрица ядра или список объектов общего назначения размера
(n_samples, n_samples_fitted), гдеn_samples_fitted— количество выборок, использованных при обучении оценщика. - yмассивоподобный объект размера (n_samples,) или (n_samples, n_outputs)
-
Истинные значения для
X. - sample_weightмассивоподобный объект размера (n_samples,), по умолчанию=None
-
Веса выборок.
- Возвращает:
-
- scorefloat
-
Значение \(R^2\) для
self.predict(X)относительноy.
Примечания
При вызове
scoreдля регрессора используется оценка \(R^2\) с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). Параметры последних имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
- 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
-
Обновлённый объект.
-
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.linear_model.HuberRegressor.html