d2_pinball_score#

sklearn.metrics.d2_pinball_score(y_true, y_pred, *, sample_weight=None, alpha=0.5, multioutput='uniform_average')[source]#

\(D^2\) 回归评分函数,解释了弹子损失(pinball loss)的比例。

最佳可能分数为 1.0,它也可以是负数(因为模型可能任意地更差)。一个模型如果总是使用 y_true 的经验 alpha 分位数作为常数预测,而忽略输入特征,则其 \(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

样本权重。

alpha浮点数,默认为 0.5

弹子偏差的斜率。它决定了使弹子偏差和 D2 达到最优的分位数水平 alpha。默认值 alpha=0.5 等效于 d2_absolute_error_score

multioutput{'raw_values', 'uniform_average'} 或形状为 (n_outputs,) 的类数组,默认为 'uniform_average'

定义多个输出值的聚合方式。类数组值定义了用于平均分数的权重。

‘raw_values’

在多输出输入情况下返回完整的误差集。

‘uniform_average’

所有输出的分数以统一权重平均。

返回:
score浮点数或浮点数 ndarray

如果 multioutput='raw_values',则返回带有弹子偏差的 \(D^2\) 分数或分数 ndarray。

注意

\(R^2\) 类似,\(D^2\) 分数可能为负(它实际上不一定是 D 量的平方)。

此度量对于单个点未明确定义,如果 n_samples 小于两个,将返回 NaN 值。

参考文献

[2]

引用 Hastie, Trevor J., Robert Tibshirani 和 Martin J. Wainwright 的等式 (3.11)。“Statistical Learning with Sparsity: The Lasso and Generalizations。” (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.772...
>>> d2_pinball_score(y_true, y_pred, alpha=0.1)
-1.045...
>>> d2_pinball_score(y_true, y_true, alpha=0.1)
1.0