如何计算Scikit中的R2值?
machine-learning
python
scikit-learn
10
0

scikit Learn( metrics.r2_score() )返回的R ^ 2值可以为负。 文档说:

“与大多数其他分数不同,R²分数可能为负(实际上不必为数量R的平方)。”

但是,关于R ^ 2的维基百科文章没有提到R(不平方)的数量。也许它使用绝对差异而不是平方差异。我真的不知道

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

由于R ^ 2 = 1-RSS / TSS,所以当我们的模型甚至比假设的最差模型(绝对均值模型)更差时,才会发生RSS / TSS> 1的唯一情况。

这里RSS =实际值(yi)和预测值(yi ^)之间的差平方和,TSS =实际值(yi)与平均值之间的差平方和(在应用回归之前)。因此,您可以想象TSS代表最佳(实际)模型,而RSS介于我们的最佳模型和最差的绝对均值模型之间,在这种情况下,我们将得到RSS / TSS <1。如果我们的模型比最差的均值还差然后在那种情况下建立模型RSS> TSS(因为实际观测值与平均值之差<预测值与实际观测值之差)。

在此处检查以直观表示的更好直觉: https : //ragrawal.wordpress.com/2017/05/06/intuition-behind-r2-and-other-regression-evaluation-metrics/

收藏
评论

scikit学习中的R^2本质上与Wikipedia文章中有关确定系数的描述相同(“最普遍的定义”的grep)。它是1 - residual sum of square / total sum of squares

经典统计数据设置与您通常尝试使用机器学习进行的操作之间的最大区别是,在机器学习中,您根据看不见的数据评估分数,这可能导致结果超出[0,1] 。如果将R^2应用于模型拟合所用的相同数据,则其范围为[0, 1]

另请参阅这个非常相似的问题

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题