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

如何通过Xgboost.train获取最佳迭代轮次的Booster而非最后迭代轮次的?

获取XGBoost训练中最佳迭代轮次的Booster模型

我懂你的痛点——用xgb.train()训练时,默认返回的是最后一轮迭代的模型,但我们真正需要的是早停机制挑中的最佳轮次模型对吧?别担心,XGBoost其实已经把这个需求考虑进去了,你手里的xgb1对象就能直接调用最佳模型,具体操作看下面:

  • 直接用现有Booster调用最佳模型做预测
    你已经打印出了xgb1.best_iteration和xgb1.best_ntree_limit,这俩就是关键参数。当你需要预测时,只需要在predict()方法里指定ntree_limit=xgb1.best_ntree_limit,就能用最佳轮次的模型来计算,而不是最后一轮的:

    # 使用最佳迭代轮次的模型进行预测
    preds_best = xgb1.predict(xgtest, ntree_limit=xgb1.best_ntree_limit)
    
  • 单独提取/保存最佳Booster对象
    如果你想把最佳模型单独存成一个独立的Booster对象,或者保存到文件,可以这么做:

    # 方式1:保存最佳模型到文件
    xgb1.save_model('best_xgb_model.model', ntree_limit=xgb1.best_ntree_limit)
    # 后续加载这个最佳模型
    best_booster = xgb.Booster()
    best_booster.load_model('best_xgb_model.model')
    
    # 方式2:直接从现有对象中提取最佳轮次的Booster
    best_booster = xgb1.get_booster().slice(0, xgb1.best_ntree_limit)
    

其实你不用额外去“获取新的Booster”,原有的xgb1已经包含了所有迭代轮次的模型参数,通过ntree_limit就能精准定位到最佳那一轮,这是XGBoost为早停机制设计的便捷用法。你打印的xgb1.best_score也能对应验证这是最佳轮次的评估分数哦。

内容的提问来源于stack exchange,提问作者Paul Wu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:09:38