【问题标题】:Python sklearn r2_score confusion for linear regressions线性回归的 Python sklearn r2_score 混淆
【发布时间】:2021-04-25 22:02:52
【问题描述】:

对不起,如果这是一个微不足道的问题。 使用 sklearn 库,可以计算以下列表的决定系数 r 平方:

y_true = [200,280,320,346.47]

y_pred = [228.6,307.8,414.4,376.5]

print(r_score(y_true,y_pred))

[输出:0.07]

使用线性回归工具时,Microsoft Excel 对 R 平方做出了不同的定义:R² 的返回值约为 0.86

sklearn 或其他地方是否有任何资源可以让我使用 Excel 对 R² 的定义?提前致谢。

【问题讨论】:

标签: python scikit-learn


【解决方案1】:

来自wiki,R2 是因变量中可从自变量中预测的方差的比例。

如果你的y_pred确实是预测值,那么我们可以按照这个公式计算:

import numpy as np

ss_total = np.var(np.array(y_true))*len(y_true)
ss_res = ((np.array(y_pred) - np.array(y_true))**2).sum()
print(1 - ss_res/ss_total)

0.06853942803971502

这正是 sklearn 返回的内容:

from sklearn.metrics import r2_score
print(r2_score(y_true,y_pred))
0.06853942803971502

当你把它放到excel中时,你是在回归你的预测与你的真实值,然后提供的r2当然很高,但是是错误的。

下面我计算你的预测和真实之间的相关系数,取平方,得到r^2,我得到和你一样的值:

from scipy import stats
slope, intercept, r, p, se = stats.linregress(y_pred, y_true)
r2 = r**2
print(r2)

0.8602435256742592

【讨论】:

    猜你喜欢
    • 2020-09-16
    • 2020-11-14
    • 2018-05-16
    • 2017-10-13
    • 2018-06-25
    • 2021-02-20
    • 2015-01-29
    • 2018-09-17
    • 2014-05-05
    相关资源
    最近更新 更多