【问题标题】:ValueError: gbrt has to be an instance of BaseGradientBoostingValueError:gbrt 必须是 BaseGradientBoosting 的一个实例
【发布时间】:2018-11-19 13:17:49
【问题描述】:

所以我试图在 spyder 中使用 xgboost 制作部分依赖图。但它给出了 ValueError: gbrt has to be an instance of 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)

谢谢。

【问题讨论】:

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


    【解决方案1】:

    这是由 sklearn 和 xgboost 之间的不兼容造成的。

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

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

    【讨论】:

    • 非常感谢。事实上,我必须使用 GradientBoostingRegressor 而不是 XGBRegressor 进行绘图。
    • 如果您认为此答案解决了您的问题,请随时接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多