sklearn r2_score 和 python stats lineregress 函数给出了非常不同的 R^2 值。为什么?

Pab*_*uin 5 python scipy linear-regression scikit-learn

我使用相同的数据但不同的 python 库来计算决定系数 R^2。使用 stats 库和 sklearn 会产生不同的结果。

这种行为背后的原因是什么?

# Using stats lineregress
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
print r_value**2
Run Code Online (Sandbox Code Playgroud)

0.956590054918

# Using sklearn
from sklearn.metrics import r2_score
print r2_score(x, y)
Run Code Online (Sandbox Code Playgroud)

0.603933484937

kaz*_*ase 6

r_value返回通过linregress是相关系数- [RXÿ。一般来说,平方相关系数与决定系数R² 不同

决定系数告诉您模型与数据的拟合程度。因此,r2_score认为x是真实值,y是模型预测的值。

如果您的xy是真实数据和预测数据,则就是您想要的。但是,如果两者都是测量数据,您很可能需要

有关相关系数决定系数的详细信息,请参阅维基百科。