微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 scikit-learn r2 得分为零?

如何解决为什么 scikit-learn r2 得分为零?

我有一个问题,我有一个训练数据集,其中所有 Y 值都是 0.75,我的模型将每行的分数作为回归预测 - 但是在计算 r2 时它为零,我不明白为什么

>

我只发现了另外 1 个类似的问题 (Scikit-learn R2 always zero),但应用那里给出的答案对我没有帮助,所以我不确定我哪里出错了。

我拥有的是这个:

df["score"] = 0.75
Y = df["score"] 
df_valid = df.drop(["score"],1)

y_pred = model.predict(df) #model is random forest regressor from sklearn 

prediction = np.array(y_pred)
training = np.array(Y)

print(prediction)
print(training)


[0.77279743 0.18169051 0.81874664 0.75440987 0.67748983 0.56747803
 0.66120282 0.5829188  0.73471978 0.57745964 0.48272321 0.65313173
 0.805028   0.63791055 0.49677642 0.64341235 0.55456506 0.52329214
 0.67690119 0.79450821 0.63378986 0.69522612 0.69802982 0.6719472
 0.67977281 0.29016943 0.56192242 0.16265814 0.57813068 0.72598279
 0.50255597 0.77138968 0.53745061 0.527479   0.67161703 0.64326146
 0.5299367  0.79977403 0.73527391 0.50858258 0.74660319 0.72315073
 0.71879784 0.55134538 0.61812615 0.64722909 0.67055658 0.68687499
 0.73416035 0.4781765  0.74878142 0.5773583 ]
[0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75
 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75
 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75
 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75]

predictiontraining 都是相同形状的 numpy 数组 - 我是否缺少其他东西?

当我尝试 print(r2_score(training,prediction)) 时,它给了我 0。

解决方法

R-squared 基本上就是模型解释的方差的比例,可以看wiki的第一行:

在统计学中,决定系数,表示为 R2 或 r2 和 发音为“R squared”,是方差在 可从独立变量中预测的因变量 变量。

你的实际值或观察值只有一个值,没有方差可言,所以你为什么要测量R^2?

您可能正在尝试检查或测量其他东西,您的模型预测具有相似观察值的值的能力如何,但在此子集上取 R^2 没有意义

, 当 y_predictedy_true 总是相同的值时,

R2 分数将为 0。就您而言,您始终拥有相同的 y_true

深入公式,计算R2

enter image description here

SStot 计算如下:

SStot= y_true - ymean

在您的情况下,您的 y_true - y 均值将始终为 0,因为 (0.75-0.75=0)。因此,在计算 R2 时,您会发现除以 0 的问题。

另一方面,如果预测的 y 值相同,则 SSres 和 SStot 将相同,并且您的 R2 也将为 0。

有关如何计算 R2 的更多信息,请参阅此 link,它已得到很好的解释

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。