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