问题
r2_score
为什么scikit-learn 中的函数与Wikipedia 中描述的确定系数公式之间存在显着差异?哪个是正确的?
语境
我正在使用 Python 3.5 来预测线性和二次模型,我正在尝试的拟合优度度量之一是 . r2_score
但是,在测试时,度量标准scikit-learn
和维基百科中提供的计算之间存在显着差异。
代码
我在这里提供我的代码作为参考,它计算上面链接的维基百科页面中的示例。
从 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
。
谢谢!
更新:这与关于如何在 scikit-learn 中计算 R^2 的问题不同,因为我试图理解并澄清的是两个结果之间的差异。该问题表明 scikit 中使用的公式与维基百科的相同,不应导致不同的值。
更新#2:事实证明我在阅读维基百科文章的示例时犯了一个错误。下面的答案和评论提到我提供的示例是针对示例中 (x, y) 值的线性最小二乘拟合。为此,维基百科文章中的答案是正确的。为此,提供的 R^2 值为 0.998。对于两个向量之间的 R^2,scikit 的答案也是正确的。非常感谢你的帮助!