0


Hyperopt调参,返回值注意事项(坑),为什么num_leaves和max_depth会显示0?Python

关于Hyperopt的使用可以参考以下几篇文章,本文不做解释:

(4条消息) Hyperopt入门_浅笑古今的博客-CSDN博客_hyperopt

使用 Hyperopt 进行参数调优(译) - 简书 (jianshu.com)

本文主要说明一下返回值的坑!

调LightGBM的时候:

fmin函数↓

搜索空间↓

坑来了!最终返回结果是这样(仅做示例):

{'bagging_fraction': 4, 'feature_fraction': 2, 'max_depth': 2, 'min_child_samples': 84, 'num_leaves': 2, 'reg_alpha': 156.09791414363687, 'reg_lambda': 0.01845081695764928}

问题来了,bagging_fraction为什么会是4?feature_fraction为什么会是2?我的搜索空间里,最小的max_depth是3,返回的字典里为什么会是2?同理,trials(我转成DF保存到本地了)也奇奇怪怪,num_leaves和max_depth会显示0↓

最终我恍然大悟,如果你在搜索空间里设置的是枚举类型(hp.choice)那么返回的是索引而不是真实值!比如上图的'num_leaves': [0]就是我搜索空间里的【10】!bagging_fraction 返回4代表我搜索空间里的【0.9】!

其他类型也要引起注意!

所以这个返回的字典params_best是不能直接去训练后面的LightGBM模型的

标签: python 机器学习

本文转载自: https://blog.csdn.net/totobey/article/details/123079091
版权归原作者 totobey 所有, 如有侵权,请联系我们删除。

“Hyperopt调参,返回值注意事项(坑),为什么num_leaves和max_depth会显示0?Python”的评论:

还没有评论