Python中使用xgb.train训练模型后如何获取其超参数
xgb.train训练后查看模型超参数的解决方法
xgb.train是xgboost的底层训练API,返回的是Booster类实例。和上层sklearn封装的XGBClassifier不同,XGBClassifier在初始化时就会把所有超参数存储到对象公开属性中,所以直接打印对象就能输出参数,而底层的Booster类没有做这个封装,没有默认公开的params属性,所以直接调用bst.params无法拿到参数。可以用以下几种方法实现需求:
- 方法1:直接读取训练前定义的超参数字典
如果你只需要自己手动配置的超参数,直接复用训练时传入的params字典即可,xgb.train运行时不会修改该字典的内容。 - 方法2:获取包含默认参数的完整配置
1.3及以上版本的xgboost支持Booster实例调用save_config()方法,返回包含所有参数(含框架自动补全的默认参数)的JSON字符串,转成字典后即可提取所需内容:import json # 训练完成后执行 config = json.loads(bst.save_config()) # 示例:获取max_depth配置 print(config["learner"]["gradient_booster"]["tree_train_param"]["max_depth"]) - 方法3:手动绑定参数到模型实例
如果你需要和XGBClassifier一样直接从模型对象读取参数,可以在训练完成后手动把参数字典绑定到Booster实例上:bst = xgb.train(params, dtrain) bst.params = params # 后续可直接调用 print(bst.params)
内容的提问来源于stack exchange,提问作者gato
相关产品推荐
相关产品推荐

