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_finiteFalse 以防止此修复发生。

注意:当预测残留均值为零时, \(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