如何在Python的XGBoost中查看已加载模型的超参数?
在Python XGBoost中查看已加载模型的超参数
当然可以!在Python的XGBoost里,我们有几种实用方法可以查看已加载Booster模型的超参数,同时也能解决你遇到的best_iteration属性缺失的问题,下面一步步来说明:
1. 查看核心训练超参数
加载后的原生Booster对象自带params属性,它会返回你训练时设置的所有核心超参数(比如目标函数、树深度、学习率这些关键配置)。直接调用即可:
print(bst.params) # 输出示例: # {'objective': 'multi:softmax', 'max_depth': '5', 'learning_rate': '0.05', 'num_class': '3', ...}
2. 获取完整模型配置
如果需要更全面的模型细节(包括树结构相关设置、早停参数等),可以使用get_config()方法获取JSON格式的完整配置,方便查看所有细节:
import json full_config = bst.get_config() print(json.dumps(full_config, indent=2))
要是想把配置保存下来,也可以用bst.save_config('model_config.json')将配置写入文件。
3. 解决best_iteration缺失的问题
你遇到的'Booster' object has no attribute 'best_iteration'是因为原生Booster不会把这个值作为直接属性暴露,但它会存在模型的属性集合里。你可以通过bst.attributes()提取这个值,注意返回的是字符串类型,需要转成整数:
# 获取最佳迭代次数,用总迭代次数做兜底 best_iteration = int(bst.attributes().get('best_iteration', bst.num_boosted_rounds())) # 用最佳迭代次数做预测 ypred = bst.predict(dtest, ntree_limit=best_iteration)
额外提示:scikit-learn接口的模型更方便
如果你训练时用的是XGBoost的scikit-learn接口(XGBClassifier/XGBRegressor),那保存加载后查看参数会更直观:
import joblib # 加载模型 model = joblib.load('xgb_sklearn_model.pkl') # 查看所有超参数 print(model.get_params()) # 直接获取最佳迭代次数 print(model.best_iteration_)
这种接口的模型会把所有训练参数和早停结果都封装好,用起来更顺手。
内容的提问来源于stack exchange,提问作者CuriousGeorge
相关产品推荐
相关产品推荐

