我正在进行超参数调整,并且正在使用scikit-optimize
进行贝叶斯优化,而使用RandomizedSearchCV
进行随机搜索。
在sci-kit优化中,我可以像这样轻松定义learning_rate
:
space= [Real(10**-5, 10**0, "log-uniform", name='learning_rate'),
Integer(1, 20, name='max_depth'),
...
]
如何使用
RandomizedSearchCV
(sklearn)进行处理,以便将相同的“列表”值用于优化?params_randomSearch = {
"learning_rate" : TODO,
"min_samples_leaf": np.arange(1,30,1),
..
}
最佳答案
按照documentation in RandomizedSearchCV():
param_distributions:字典
Dictionary with parameters names (string) as keys and distributions or
lists of parameters to try. Distributions must
provide a rvs method for sampling (such as those from
scipy.stats.distributions). If a list is given, it is sampled
uniformly.
现在,scikit-optimize中的
Real
和Integer
已经实现了rvs()
方法,因此您可以直接使用它们。只需在字典中分配它们,即可在RandomizedSearchCV中使用。params_randomSearch = {
"learning_rate" : Real(10**-5, 10**0, "log-uniform", name='learning_rate'),
"min_samples_leaf": np.arange(1,30,1),
..
}
关于python - 在RandomizedSearchCV中定义对数统一learning_rate参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49997883/