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