Метод оценки 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», а не многовыходным параметром!