python - 将 0 添加到 BayesSearchCV 中的对数均匀参数分布
问题描述
我正在使用 scikit-optimize 在我的 RandomForestClassifier 超参数空间中执行 BayesSearchCV。一个超参数也应该为 0(零),同时具有对数均匀分布:
ccp_alpha = Real(min(ccp_alpha), max(ccp_alpha), prior='log-uniform')
由于无法计算 log(0),显然不可能让参数在某些时候取值为 0。
因此,引发以下错误:
ValueError: Not all points are within the bounds of the space.
有没有办法解决这个问题?
解决方案
请注意,从对数均匀分布中获得 0 的定义并不明确。你将如何规范这个分布,或者换句话说,得出 0 的几率是多少?
最简单的方法是生成一个值列表以尝试使用指定的分布。由于此列表中的值将被统一采样,因此您可以使用任何您喜欢的分布。例如列表
reals = [0,0,0,0,x1,x2,x3,x4]
如果 x1 到 x4 是对数均匀分布的,则您抽到 0 的几率是 4 / 8,抽到对数均匀分布值的几率是 4 / 8。
如果你真的想要,你还可以实现一个名为 MyReal 的类(可能是 Real 的子类),它实现了一个 rvs 方法,可以产生你想要的分布。
推荐阅读
- raspberry-pi - Raspberry Pi 作为 WLAN 热点和 LAN 上的静态 IP
- javascript - 如何在 React JS 中使用三元运算符将 Font Awesome Icons 与文本一起使用?
- server - 在 2 个服务器之间自动同步和镜像数据 cPanel
- github - Github/Gitlab Repository 总分
- python - Python电报机器人:调用函数的InlineKeyboardButton
- spring - 我可以使用 EntityGraph 从实体中选择特定字段吗?
- python - OpenCV、Python:航拍图像拼接中的透视变形问题
- python - 根据 Elasticsearch 中的字段值对记录进行排名
- c++ - 我的 for 循环有更好更短的方法吗?
- javascript - Wordpress 根据背景 url 获取图片标题