在 RandomizedSearchCV 中定义 log uniform learning_rate 参数

Define log uniform learning_rate parameter in RandomizedSearchCV

我正在进行超参数调整,我使用 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) 来实现相同的 "list" 值用于优化?

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 中的RealInteger 已经实现了rvs() 方法,因此您可以直接使用它们。只需将它们分配到要在 RandomizedSearchCV 中使用的字典中。

params_randomSearch = {
      "learning_rate" : Real(10**-5, 10**0, "log-uniform", name='learning_rate'),
      "min_samples_leaf": np.arange(1,30,1),
              ..
              }