我正在进行超参数调整,并使用 scikit-optimize
进行贝叶斯优化,使用 RandomizedSearchCV
进行随机搜索。
在 sci-kit optimization 中,我可以轻松地定义 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 : dict
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中定义loguniformlearning_rate参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49997883/