Метод оценки XGBRegressor, возвращающий странные значения

Я пытался использовать метод оценки XGBRegressor из Python API, и он возвращает результат 0,917. Я ожидаю, что это будет оценка r2 регрессии.

Однако, пытаясь r2_score из sklearn в том же пакете, он возвращает другое значение (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

2 ответа

Решение

Когда вы звоните xgbr.score() этот код на самом деле называется:

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

Но когда вы вызываете r2_score явно, значение по умолчанию multiouput Параметр "равномерный_средний".

Попробуйте следующий код:

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

И вы получите идентичные результаты.

Вы имели в виду, что вес выборки = None заменяется «uniform_average», а не многовыходным параметром!

Другие вопросы по тегам