我正在进行超参数调整,并且正在使用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中的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),
              ..
              }

关于python - 在RandomizedSearchCV中定义对数统一learning_rate参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49997883/

10-12 21:17