ValueError: gbrt должен быть экземпляром BaseGradientBoosting - PullRequest
0 голосов
/ 19 ноября 2018

Поэтому я пытаюсь построить график частичной зависимости, используя xgboost в spyder. Но это дает ValueError: gbrt должен быть экземпляром BaseGradientBoosting . У меня есть предопределенные значения train_X, train_y, val_X, val_y. Вот код:

from xgboost import XGBRegressor

model=XGBRegressor(n_estimator=1000, learning_rate=0.05)
model.fit(train_X, train_y, early_stopping_rounds=5, eval_set=[(val_X, val_y)], verbose=False)

pred_xgb=model.predict(val_X)

print(mean_absolute_error(pred_xgb, val_y),'is the mae \n')

from sklearn.ensemble.partial_dependence import plot_partial_dependence
from sklearn.ensemble.partial_dependence import partial_dependence

plot=plot_partial_dependence(model,train_X, features=[1,3], feature_names=['mssubclass','mszoning','salestype','salescondition'], grid_resolution=20)

Спасибо.

1 Ответ

0 голосов
/ 19 ноября 2018

Это вызвано несовместимостью между sklearn и xgboost.

plot_partial_dependence ожидает модель, которая наследуется от BaseGradientBoosting, которая является специфичным для sklearn классом, который XGBoostRegressor не наследует от AFAIK.

Это означает, что если вы хотите использовать его, вам нужно будет выполнить конвертацию между моделью XGBoost и моделью GBRT sklearn.Возможно сделать это через treelite .

...