我正在使用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的几率是多少
最简单的方法是生成一个值列表,以尝试使用指定的分布。由于此列表中的值将统一采样,因此可以使用任意分布。例如,使用列表
这里x1到x4是对数均匀分布的,将给出绘制0的赔率4/8,绘制对数均匀分布值的赔率4/8
如果您真的想,还可以实现一个名为MyReal的类(可能是Real的子类),该类实现一个rvs方法,该方法生成您想要的分布
相关问题 更多 >
编程相关推荐