XGBRegressor 评分方法返回奇怪的值

XGBRegressor score method returning strange values

我尝试使用 Python API 中的 XGBRegressor 评分方法,它返回的结果为 0.917。我希望这是回归的 r2 分数。

但是,在同一包上尝试 r2_score 来自 sklearn 的 returns 不同的值 (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

当您调用 xgbr.score() 时,实际调用的代码是:

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

但是当您显式调用 r2_score 时,multiouput 参数的默认值为 "uniform_average"。

试试下面的代码:

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

你会得到相同的结果。