【问题标题】:r2_score is -18.709, Why?r2_score 是-18.709,为什么?
【发布时间】:2020-02-23 00:00:12
【问题描述】:

我在 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.]

【问题讨论】:

  • 我们从第一行就知道你的代码不是真实的,所以任何猜测都是徒劳的。
  • @hobbs 说得对。

标签: python-3.x scikit-learn


【解决方案1】:

决定系数r平方定义为

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

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

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

来源:维基百科

【讨论】:

  • 感谢您的评论。有什么程序可以避免这种输出吗?
猜你喜欢
  • 2020-12-20
  • 2020-09-02
  • 2023-01-24
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多