【问题标题】:How to calculate predicted r2 in python?如何在python中计算预测的r2?
【发布时间】:2020-10-31 09:46:00
【问题描述】:

我正在尝试计算预测的 r2,我有我认为应该可以工作的代码,但预测的 r2 的输出为“无”。我不确定这是否意味着它是 0 或者是否有问题?

这是我正在使用的代码:

y_true= Y
y_pred = xgboostmodel.predict(X)
xs = X

def press_statistic(y_true, y_pred, xs):
    res = y_pred - y_true
    hat = xs.dot(np.linalg.pinv(xs))
    den = (1 - np.diagonal(hat))
    sqr = np.square(res/den)
    return sqr.sum()

def predicted_r2(y_true, y_pred, xs):
    press = press_statistic(y_true=y_true,
                            y_pred=y_pred,
                            xs=xs
    )
    
def r2(y_true, y_pred):
    """
    Calculation of the unadjusted r-squared, goodness of fit metric
    """
    sse  = np.square( y_pred - y_true ).sum()
    sst  = np.square( y_true - y_true.mean() ).sum()
    return 1 - sse/sst

print(r2(y_true, y_pred))
print(predicted_r2(y_true, y_pred, xs))

打印 r2 工作并给出 0.87

打印预测的 r2 只输出 none - 如果有的话,这里出了什么问题?

【问题讨论】:

  • 你错过了return

标签: python machine-learning statistics regression


【解决方案1】:

定义predicted_r2 函数后,您似乎缺少return。我假设您需要返回之前在函数中定义的 press 变量:

def predicted_r2(y_true, y_pred, xs):
    press = press_statistic(y_true=y_true,
                            y_pred=y_pred,
                            xs=xs)
    return press

【讨论】:

  • 谢谢你,这已经解决了-我会打勾
  • 很高兴能帮上忙!所有函数都将返回None,除非指定了不同的东西!
猜你喜欢
  • 2017-10-04
  • 1970-01-01
  • 2014-06-01
  • 2015-10-06
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多