问题:
调用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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/35161.html