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')
你会得到相同的结果。
我尝试使用 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')
你会得到相同的结果。