XGBRegressor得分方法返回奇怪的值

时间:2018-01-31 12:01:39

标签: python scikit-learn xgboost

我尝试使用Python API中的XGBRegressor评分方法,并返回0.917的结果。我期待这是回归的r2分数。

但是,在同一个包中尝试sklearn的r2_score,它会返回一个不同的值(0.903)

xgbr.score(x_test, y_test) # Returns 0.917
y_pred = xgbr.predict(x_test)
r2_score(y_pred, y_test) # Returns 0.903

发生了什么?我无法找到有关XGBoost评分方法的任何文档。我使用的是v0.7

1 个答案:

答案 0 :(得分:0)

当您致电xgbr.score()时,实际上会调用此代码:

    ...
    return r2_score(y, self.predict(X), sample_weight=None,
                    multioutput='variance_weighted')

但是当你明确地调用r2_score时,multiouput param的默认值是“uniform_average”。

请尝试以下代码:

r2_score(y_pred, y_test, multioutput='variance_weighted')

你会得到相同的结果。