r2_score#
- sklearn.metrics.r2_score(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', force_finite=True)[源代码]#
\(R^2\) (决定系数)回归评分函数。
最好的可能分数是1.0,并且可以是负的(因为模型可以任意更差)。在一般情况下,当真实y为非常数时,总是预测平均y而忽略输入特征的常数模型将得到a \(R^2\) 评分0.0。
在特定情况下,
y_true
是不变的, \(R^2\) 分数不是有限的:它要么是NaN
(完美预测)或-Inf
(不完美的预测)。为了防止这种非有限的数字污染更高级别的实验,例如网格搜索交叉验证,默认情况下,这些情况分别用1.0(完美预测)或0.0(不完美预测)替换。您可以设置force_finite
到False
以防止此修复发生。注意:当预测残留均值为零时, \(R^2\) 分数与
Explained Variance score
.阅读更多的 User Guide .
- 参数:
- y_true形状的类似阵列(n_samples,)或(n_samples,n_outputs)
地面真相(正确)目标值。
- y_pred形状的类似阵列(n_samples,)或(n_samples,n_outputs)
估计目标值。
- sample_weight形状类似数组(n_samples,),默认=无
样本重量。
- multioutput'raw_values','uniform_average','variance_weighted'}, 数组状的形状(n_outputs,)或无,默认值='uniform_average'
定义多个输出分数的聚合。类似数组的值定义用于平均分数的权重。默认为“unique_average”。
- “raw_values”:
在多输出输入的情况下返回完整的分数集。
- 'uniform_average':
所有输出的分数以统一的权重进行平均。
- “方差_weighted”:
所有输出的分数均为平均值,并通过每个单独输出的方差加权。
在 0.19 版本发生变更: 多输出的默认值为“unique_average”。
- force_finite布尔,默认=True
标志,指示是否
NaN
和-Inf
由常数数据得出的分数应替换为实数 (1.0
如果预测完美,0.0
否则)。默认值为True
,超参数搜索过程(例如网格搜索交叉验证)的方便设置。Added in version 1.1.
- 返回:
- z浮动或浮动数组
的 \(R^2\) 如果“多输出”为“raw_values”,则score或ndscore数组。
注意到
这不是一个对称函数。
与大多数其他分数不同, \(R^2\) 分数可能是负的(它实际上不需要是量R的平方)。
此指标对于单个样本没有明确定义,如果n_samples小于2,则将返回NaN值。
引用
[1]Wikipedia entry on the Coefficient of determination <https://en.wikipedia.org/wiki/Coefficient_of_determination>
_示例
>>> from sklearn.metrics import r2_score >>> y_true = [3, -0.5, 2, 7] >>> y_pred = [2.5, 0.0, 2, 8] >>> r2_score(y_true, y_pred) 0.948... >>> y_true = [[0.5, 1], [-1, 1], [7, -6]] >>> y_pred = [[0, 2], [-1, 2], [8, -5]] >>> r2_score(y_true, y_pred, ... multioutput='variance_weighted') 0.938... >>> y_true = [1, 2, 3] >>> y_pred = [1, 2, 3] >>> r2_score(y_true, y_pred) 1.0 >>> y_true = [1, 2, 3] >>> y_pred = [2, 2, 2] >>> r2_score(y_true, y_pred) 0.0 >>> y_true = [1, 2, 3] >>> y_pred = [3, 2, 1] >>> r2_score(y_true, y_pred) -3.0 >>> y_true = [-2, -2, -2] >>> y_pred = [-2, -2, -2] >>> r2_score(y_true, y_pred) 1.0 >>> r2_score(y_true, y_pred, force_finite=False) nan >>> y_true = [-2, -2, -2] >>> y_pred = [-2, -2, -2 + 1e-8] >>> r2_score(y_true, y_pred) 0.0 >>> r2_score(y_true, y_pred, force_finite=False) -inf