lightgbm≤3.3.1调用early_stopping时min_delta参数未识别报错如何解决
问题原因
- 参数位置错误:你修改的代码中将
min_delta放在了callbacks列表外侧,属于语法错误,容忍度参数需要传入early_stopping()函数内部。 - 版本参数不兼容:你当前使用的LightGBM版本低于3.3.0,该版本之前早停回调的容忍度参数为
min_gain,min_delta是3.3.0版本之后新增的别名,旧版本无法识别该参数名,因此触发报错。
解决方案
- 方案1:使用兼容旧版本的
min_gain参数
直接将参数名替换为min_gain即可,多评估指标场景下传入对应顺序的数值列表,正确代码如下:
reg = LGBMRegressor(**lgbr_params) reg.fit(train_valid[features], train_valid[target], verbose=100, eval_set=[(test[features], test[target])], eval_metric=['rmse', 'mae'], callbacks=[early_stopping(stopping_rounds=10, first_metric_only=False, min_gain=[0.1, 0.1])])
- 方案2:升级LightGBM到支持
min_delta的版本
Windows环境升级失败通常是默认源网络问题,使用国内镜像执行升级命令即可:pip install -U lightgbm -i https://pypi.tuna.tsinghua.edu.cn/simple
升级到3.3.0及以上版本后,即可正常使用min_delta参数。
内容的提问来源于stack exchange,提问作者Amin Kiany
相关产品推荐
相关产品推荐

