首页 > 解决方案 > r2_score 是-18.709,为什么?

问题描述

我在 Python,ML 中进行多元线性回归。据我所知,r2_score 应该在 -1 到 1 的范围内。但是,我得到了 -18.709。

获得此答案有什么问题,我该如何纠正?其编码和结果如下所示:

计算 R

from SK-learn.meterics import r2_score

score = r2_score(y_test, y_pred)
print(score)

输出:

-18.7097

其预测结果如下:

y_pred = model.predict(X_test)
print(y_pred)

结果:

[ 25000. 123000. 73000. 103000.]

标签: python-3.xscikit-learn

解决方案


决定系数 r-square 定义为

在此处输入图像描述

Nash-Sutcliffe 模型效率系数(解释如下)

在此处输入图像描述

在某些情况下,R2 的计算定义可能会产生负值,具体取决于所使用的定义。当与相应结果进行比较的预测没有从使用这些数据的模型拟合过程中得出时,就会出现这种情况。

即使使用了模型拟合程序,R2 仍可能为负值,例如当进行线性回归而不包括截距时,或使用非线性函数拟合数据时。根据这一特定标准,在出现负值的情况下,数据的平均值比拟合函数值更适合结果。由于决定系数的最一般定义也称为 Nash-Sutcliffe 模型效率系数,因此最后一种表示法在许多领域中是首选,因为它表示可以从 -∞ 到 1 变化的拟合优度指标(即,它可以产生负值)与平方字母混淆。

来源:维基百科


推荐阅读