所以我试图在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)
谢谢。
答案 0 :(得分:0)
这是由于sklearn和xgboost不兼容引起的。
plot_partial_dependence需要一个从BaseGradientBoosting
继承的模型,该模型是sklearn特定的类,XGBoostRegressor不能从AFAIK继承。
这意味着,如果要使用它,则需要在XGBoost模型和sklearn GBRT模型之间进行转换。通过treelite可以做到这一点。