我正在使用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.有什么办法可以解决这个问题吗?
发布于 2021-09-15 20:05:43
请注意,从对数均匀分布中获得0并没有很好地定义。你将如何使这种分布正态化,或者换句话说,绘制0的几率是多少?
最简单的方法是生成一个值列表,以尝试使用指定的分布。由于此列表中的值将被均匀采样,因此您可以使用您喜欢的任何分布。例如,使用列表
reals = [0,0,0,0,x1,x2,x3,x4] 我们这里的x1到x4是对数均匀分布的,你可以得到4/8的赔率为0,和4/8的赔率为对数均匀分布的值。
如果您真的想这样做,您还可以实现一个名为MyReal的类(可能是从Real派生的子类),它实现一个rvs方法,从而生成您想要的发行版。
https://stackoverflow.com/questions/63314689
复制相似问题