如果这是一个微不足道的问题,很抱歉。使用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²的定义?提前谢谢。
发布于 2021-04-25 22:02:53
From 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
https://stackoverflow.com/questions/67250072
复制相似问题