将0添加到BayesSearchCV中的对数均匀参数分布

2024-05-17 02:36:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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.

有办法解决这个问题吗


Tags: theccpalphalog参数对数空间scikit
1条回答
网友
1楼 · 发布于 2024-05-17 02:36:39

请注意,从日志均匀分布中获取0的定义并不明确。您将如何规范化此分布,或者换句话说,绘制0的几率是多少

最简单的方法是生成一个值列表,以尝试使用指定的分布。由于此列表中的值将统一采样,因此可以使用任意分布。例如,使用列表

reals = [0,0,0,0,x1,x2,x3,x4] 

这里x1到x4是对数均匀分布的,将给出绘制0的赔率4/8,绘制对数均匀分布值的赔率4/8

如果您真的想,还可以实现一个名为MyReal的类(可能是Real的子类),该类实现一个rvs方法,该方法生成您想要的分布

相关问题 更多 >