【问题标题】:XGBRegressor score method returning strange valuesXGBRegressor score 方法返回奇怪的值
【发布时间】:2018-07-10 12:48:50
【问题描述】:

我尝试使用 Python API 中的 XGBRegressor 的 score 方法,它返回的结果为 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

【问题讨论】:

    标签: python scikit-learn xgboost


    【解决方案1】:

    当你调用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')
    

    你会得到相同的结果。

    【讨论】:

    • 完美!很好的答案和解释!
    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多