Spec-Zone.ru › scikit-learn

d2_pinball_score

sklearn.metrics.d2_pinball_score(y_true, y_pred, *, sample_weight=None, alpha=0.5, multioutput='uniform_average')[исходный код]

Функция оценки регрессии \(D^2\), доля объяснённых потерь Пинбола.

Наилучшая возможная оценка равна 1.0, но она может быть отрицательной (так как модель может работать сколь угодно плохо). Модель, которая всегда использует эмпирическую альфа-квантиль y_true в качестве постоянного прогноза, игнорируя входные признаки, получает оценку \(D^2\), равную 0.0.

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

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

Параметры:
y_trueмассивоподобный объект формы (n_samples,) или (n_samples, n_outputs)

Истинные (правильные) целевые значения.

y_predмассивоподобный объект формы (n_samples,) или (n_samples, n_outputs)

Оценённые целевые значения.

sample_weightмассивоподобный объект формы (n_samples,), по умолчанию None

Веса образцов.

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

Наклон функции отклонения Пинбола. Он определяет уровень альфа-квантиля, для которого функция отклонения Пинбола и D2 достигают оптимальных значений. Значение по умолчанию alpha=0.5 эквивалентно d2_absolute_error_score.

multioutput{‘raw_values’, ‘uniform_average’} или массивоподобный объект формы (n_outputs,), по умолчанию ’uniform_average’

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

‘raw_values’ :

Возвращает полный набор ошибок для входных данных с несколькими выходами.

‘uniform_average’ :

Оценки для всех выходов усредняются с равными весами.

Возвращает:
scorefloat или ndarray из float

Оценка \(D^2\) на основе функции отклонения Пинбола или ndarray оценок, если multioutput='raw_values'.

Примечания

Как и оценка \(R^2\), оценка \(D^2\) может быть отрицательной (она не обязательно является квадратом некоторой величины D).

Эта метрика не определена для одной точки и возвращает значение NaN, если n_samples меньше двух.

Эта метрика не является встроенной метрикой оценки, задаваемой строковым именем, которую можно использовать с такими инструментами, как GridSearchCV или RandomizedSearchCV. Вместо этого можно создать объект оценщика с помощью make_scorer, задав любые необходимые параметры. Подробности см. в разделе Examples.

Ссылки

[1]

Уравнение (7) из Koenker, Roger; Machado, José A. F. (1999). «Качество подгонки и связанные с ним процедуры вывода для квантильной регрессии»

[2]

Уравнение (3.11) из Hastie, Trevor J., Robert Tibshirani и Martin J. Wainwright. «Статистическое обучение с разреженностью: лассо и его обобщения». (2015). https://hastie.su.domains/StatLearnSparsity/

Примеры

>>> from sklearn.metrics import d2_pinball_score
>>> y_true = [1, 2, 3]
>>> y_pred = [1, 3, 3]
>>> d2_pinball_score(y_true, y_pred)
0.5
>>> d2_pinball_score(y_true, y_pred, alpha=0.9)
0.666...
>>> d2_pinball_score(y_true, y_pred, alpha=0.1)
-1.999...
>>> d2_pinball_score(y_true, y_true, alpha=0.1)
1.0

Создание объекта оценщика с помощью make_scorer:

>>> import numpy as np
>>> from sklearn.metrics import make_scorer
>>> from sklearn.model_selection import GridSearchCV
>>> from sklearn.linear_model import QuantileRegressor
>>> X = np.array([[1], [2], [3], [4]])
>>> y = np.array([2.5, 0.0, 2, 8])
>>> pinball_95_scorer = make_scorer(d2_pinball_score, alpha=0.95)
>>> grid = GridSearchCV(
...     QuantileRegressor(quantile=0.95),
...     param_grid={"fit_intercept": [True, False]},
...     scoring=pinball_95_scorer,
...     cv=2,
... ).fit(X, y)
>>> grid.best_params_
{'fit_intercept': True}

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.metrics.d2_pinball_score.html

Spec-Zone.ru

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