LightGBM中lgb.train()报错:无法识别early_stopping_rounds参数
解决LightGBM
train() 不识别 early_stopping_rounds 参数的问题 问题原因
你遇到的错误是因为较新版本的LightGBM(v3.0及以上)已移除lgb.train()函数中的early_stopping_rounds直接参数,早停功能需要通过回调函数实现。
修复后的代码
将early_stopping_rounds替换为lightgbm.early_stopping()回调,同时修正参数中的小问题(is_unbalance应使用布尔值而非字符串):
import lightgbm as lgb parameters = { 'application': 'binary', 'objective': 'binary', 'metric': 'auc', 'is_unbalance': True, # 改为布尔值,原字符串'true'可能引发警告 'boosting': 'gbdt', 'num_leaves': 50, 'feature_fraction': 0.8, 'bagging_fraction': 0.8, 'bagging_freq': 20, 'learning_rate': 0.003, 'max_depth': 5, 'verbose': 0 } # 定义早停回调 early_stopping_callback = lgb.early_stopping(stopping_rounds=100) model = lgb.train( parameters, train_data_lgb, valid_sets=test_data_lgb, num_boost_round=3000, callbacks=[early_stopping_callback] # 传入回调列表 )
额外说明
- 若你使用的是v3.0以下的旧版本LightGBM,可尝试升级到最新版本,或检查参数拼写是否有误。但更推荐使用回调方式,这是当前官方标准用法。
- 可搭配
lgb.log_evaluation()回调查看训练过程中的指标变化:log_callback = lgb.log_evaluation(period=10) model = lgb.train( parameters, train_data_lgb, valid_sets=test_data_lgb, num_boost_round=3000, callbacks=[early_stopping_callback, log_callback] )
内容的提问来源于stack exchange,提问作者LVN
相关产品推荐
相关产品推荐

