首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python sklearn线性回归的r2_score混淆

Python sklearn线性回归的r2_score混淆
EN

Stack Overflow用户
提问于 2021-04-25 13:25:03
回答 1查看 210关注 0票数 0

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

代码语言:javascript
运行
复制
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²的定义?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-04-25 22:02:53

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

如果您的y_pred确实是预测值,那么我们可以根据这个公式进行计算:

代码语言:javascript
运行
复制
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返回的内容:

代码语言:javascript
运行
复制
from sklearn.metrics import r2_score
print(r2_score(y_true,y_pred))
0.06853942803971502

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

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

代码语言:javascript
运行
复制
from scipy import stats
slope, intercept, r, p, se = stats.linregress(y_pred, y_true)
r2 = r**2
print(r2)

0.8602435256742592
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67250072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档