【发布时间】:2016-01-30 09:33:58
【问题描述】:
问题
为什么r2_score function in scikit-learn 和Coefficient of Determination as described in Wikipedia 的公式之间存在显着差异?哪个是正确的?
上下文
我使用 Python 3.5 来预测线性和二次模型,我正在尝试的拟合优度度量之一是 .但是,在测试时,scikit-learn 中的 r2_score 指标与 Wikipedia 中提供的计算之间存在显着差异。
代码
我在这里提供我的代码作为参考,它计算上面链接的 Wikipedia 页面中的示例。
从 sklearn.metrics 导入 r2_score 导入 numpy y = [1, 2, 3, 4, 5] f = [1.9, 3.7, 5.8, 8.0, 9.6] # 转换为numpy数组并保证双精度避免单精度错误 观察 = numpy.array(y, dtype=numpy.float64) 预测 = numpy.array(f, dtype=numpy.float64) scipy_value = r2_score(观察到,预测) >>> scipy_value:很明显,scipy 的计算值为-3.8699999999999992,而维基百科中的参考值为0.998。
谢谢!
更新:这与this question about how R^2 is calculated in scikit-learn 不同,因为我试图理解并澄清的是两个结果之间的差异。该问题表明 scikit 中使用的公式与 Wikipedia 相同,不应导致不同的值。
更新 #2: 原来我在阅读 Wikipedia 文章的示例时犯了一个错误。下面的答案和 cmets 提到我提供的示例是针对示例中 (x, y) 值的线性最小二乘拟合。为此,维基百科文章中的答案是正确的。为此,提供的 R^2 值为 0.998。对于两个向量之间的 R^2,scikit 的答案也是正确的。非常感谢您的帮助!
【问题讨论】:
-
我认为您提到的问题没有正确回答我的问题。没有提到两个来源的结果之间的差异,这是我的问题试图解决的要点。事实上,
scikit-learn中的计算是否有效是一个非常重要的点(以及为什么),我认为应该确定以备将来参考。跨度>
标签: python numpy scikit-learn goodness-of-fit