ValueError:gbrt必须是BaseGradientBoosting的实例

时间:2018-11-19 13:17:49

标签: python dependencies data-science data-analysis xgboost

所以我试图在spyder中使用xgboost进行部分依赖图。但这给出了 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 :(得分:0)

这是由于sklearn和xgboost不兼容引起的。

plot_partial_dependence需要一个从BaseGradientBoosting继承的模型,该模型是sklearn特定的类,XGBoostRegressor不能从AFAIK继承。

这意味着,如果要使用它,则需要在XGBoost模型和sklearn GBRT模型之间进行转换。通过treelite可以做到这一点。