You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:31:35