dask_ml.metrics.r2_score

dask_ml.metrics.r2_score

dask_ml.metrics.r2_score(y_true: dask_ml._typing.ArrayLike, y_pred: dask_ml._typing.ArrayLike, sample_weight: Optional[dask_ml._typing.ArrayLike] = None, multioutput: Optional[str] = 'uniform_average', compute: bool = True) dask_ml._typing.ArrayLike[源代码]

\(R^2\) (决定系数) 回归评分函数。

此文档字符串是从 sklearn.metrics.r2_score 复制的。

Dask 版本可能存在一些不一致性。

最佳可能得分是1.0,它也可能是负的(因为模型可能任意地更差)。在一般情况下,当真实的y是非恒定的,一个总是预测平均y而忽略输入特征的恒定模型将得到一个 \(R^2\) 得分为0.0。

y_true 为常数的特定情况下,\(R^2\) 分数不是有限的:它要么是 NaN``(完美预测),要么是 ``-Inf``(不完美预测)。为了防止这些非有限数污染更高级别的实验,例如网格搜索交叉验证,默认情况下这些情况分别被替换为 1.0(完美预测)或 0.0(不完美预测)。你可以将 ``force_finite 设置为 False 以防止此修复发生。

注意:当预测残差具有零均值时,\(R^2\) 分数与 解释方差分数 相同。

更多信息请参阅 用户指南

参数
y_true形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组

地面实况(正确)的目标值。

y_pred形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组

估计的目标值。

sample_weight类似数组的形状 (n_samples,),默认=None

样本权重。

多输出{‘raw_values’, ‘uniform_average’, ‘variance_weighted’}, 数组形式,形状为 (n_outputs,) 或 None, 默认=’uniform_average’

定义多个输出分数的聚合。类似数组的值定义了用于平均分数的权重。默认是 “uniform_average”。

‘原始值’ :

在多输出输入的情况下,返回完整的分数集。

‘uniform_average’ :

所有输出的分数以均匀权重进行平均。

‘variance_weighted’ :

所有输出的分数被平均,并根据每个单独输出的方差进行加权。

在 0.19 版更改: 多输出默认值为 ‘uniform_average’。

force_finitebool, 默认=True (Dask 不支持)

指示是否应将由常量数据产生的 NaN-Inf 分数替换为实数(如果预测完美则为 1.0,否则为 0.0)的标志。默认值为 True,这是超参数搜索程序(例如网格搜索交叉验证)的便捷设置。

1.1 新版功能.

返回
z浮点数或浮点数数组

如果 ‘multioutput’ 是 ‘raw_values’,则为 \(R^2\) 分数或分数的 ndarray。

注释

这不是一个对称函数。

与大多数其他分数不同,\(R^2\) 分数可能是负的(它实际上不一定是某个量 R 的平方)。

对于单个样本,此指标定义不明确,如果 n_samples 小于两个,将返回 NaN 值。

参考文献

1

Wikipedia 关于决定系数的条目

示例

>>> 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