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

如何从LightGBM Booster中获取最优迭代轮次的相关指标?

获取LightGBM Booster对象的训练与验证指标(最优轮次)

一、直接获取最优轮次的指标

训练得到的Booster对象自带best_score_属性,它存储了早停机制触发时,最优迭代轮次下所有数据集的指标值;best_iteration属性则返回最优轮次的编号(1-based)。

示例代码:

# 获取最优轮次编号
best_round = lgb_class.best_iteration

# 获取最优轮次的所有指标
best_scores = lgb_class.best_score_

# 提取训练集的binary_logloss
train_best_loss = best_scores['training']['binary_logloss']
# 提取验证集的binary_logloss(对应valid_sets中的第二个数据集,key为valid_0)
valid_best_loss = best_scores['valid_0']['binary_logloss']

print(f"最优迭代轮次:第{best_round}轮")
print(f"训练集binary_logloss: {train_best_loss:.6f}")
print(f"验证集binary_logloss: {valid_best_loss:.6f}")

二、获取所有迭代轮次的指标

如果需要查看每一轮的指标变化,可以使用evals_result_属性,它会记录训练过程中每一轮各数据集的指标数值(列表形式,0-based索引,对应第1到第N轮)。

示例代码:

# 获取所有轮次的指标记录
all_eval_results = lgb_class.evals_result_

# 提取训练集每一轮的binary_logloss列表
train_loss_history = all_eval_results['training']['binary_logloss']
# 提取验证集每一轮的binary_logloss列表
valid_loss_history = all_eval_results['valid_0']['binary_logloss']

# 查看第100轮的指标(注意索引为99,因为是0-based)
print(f"第100轮训练集logloss: {train_loss_history[99]:.6f}")
print(f"第100轮验证集logloss: {valid_loss_history[99]:.6f}")

关键属性说明

  • best_iteration:早停时的最优迭代次数,以1为起始计数
  • best_score_:字典结构,键为数据集名称(training对应训练集,valid_0、valid_1对应后续验证集),值为该数据集在最优轮次的指标字典
  • evals_result_:字典结构,键为数据集名称,值为该数据集每一轮的指标列表,列表索引对应迭代轮次(索引i对应第i+1轮)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:22:59