python lightgbm中使用“early_stopping_rounds”和“verbose_eval”出现 UserWarning

问题:

调用lightgbm库,设置了早停轮次“early_stopping_rounds”参数和打印log间隔“verbose_eval”参数后出现UserWarning。

或者提示TypeError: fit() got an unexpected keyword argument ‘early_stopping_rounds‘。

示例代码如下:

import lightgbm

cv_results = lightgbm.cv(
                    metrics='auc',
                    ###
                    early_stopping_rounds=30, 
                    verbose_eval=True 
                    ###
                    )        

两个UserWarning如下:

UserWarning: 'early_stopping_rounds' argument is deprecated and will be removed in a future release of LightGBM. Pass 'early_stopping()' callback via 'callbacks' argument instead.

警告:'early_stopping_rounds' 参数已过时,并将在 LightGBM 的未来版本中移除。请通过 'callbacks' 参数传递 'early_stopping()' 回调函数来代替。

UserWarning: 'verbose_eval' argument is deprecated and will be removed in a future release of LightGBM. Pass 'log_evaluation()' callback via 'callbacks' argument instead.

警告:'verbose_eval' 参数已过时,并将在 LightGBM 的未来版本中移除。请通过 'callbacks' 参数传递 'log_evaluation()' 回调函数来代替。

原因:

由于LightGBM库在更新之后将老版本的函数进行了改动,导致需要传入的参数传入参数的方式发生了改变。

参数'early_stopping_rounds' 和'verbose_eval'已被弃用,改为通过“callbacks”参数传入“early_stopping”和“log_evaluation”。

解决方法:

将代码做如下修改:

import lightgbm

###
from lightgbm import log_evaluation, early_stopping
callbacks = [log_evaluation(period=100), early_stopping(stopping_rounds=30)]
###

cv_results = lightgbm.cv(
                    metrics='auc',
                    ###
                    callbacks=callbacks
                    ###
                    )

首先

from lightgbm import log_evaluation, early_stopping

之后用

callbacks = [log_evaluation(period=100), early_stopping(stopping_rounds=30)]

替换之前的'verbose_eval'以及'early_stopping_rounds'即可: )

其中period=100指每迭代100次打印一次日志;

stopping_rounds=30指如果验证集的误差在30次迭代内没有降低,则停止迭代。

参考:

LightGBM documentation

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值