GridSearch 中的 sklearn 逻辑回归参数

sklearn logistic regression parameter in GridSearch

只是想知道如何将参数分成一组并将其传递给 gridsearch? 因为我想将惩罚 l1 和 l2 传递给网格搜索,并将相应的求解器 newton-cg 传递给 L2。

但是,当我 运行 下面的代码时,gridsearch 将首先 运行 l1 with newton-cg 并导致错误消息 ValueError:解算器 newton-cg 仅支持 l2 惩罚,得到 l1 惩罚。

谢谢

 param_grid = [

  {'penalty':['l1','l2'] ,
   'solver' : ['newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga']
  }

 ]

官方文档说:

... or a list of such dictionaries, in which case the grids spanned by each dictionary in the list are explored. This enables searching over any sequence of parameter settings. So just supply a list of dictionaries each dictionary with consistent set of arguments that work together

GridSearchCVUser Guide中也有一个明确的例子,作为一个很好的例子。

试试这个例子:

param_grid = [
  {'penalty': ['l1'], 'solver': [ 'lbfgs', 'liblinear', 'sag', 'saga']},
  {'penalty': ['l2'], 'solver': ['newton-cg']},
 ]

此处 l1 将尝试使用 'lbfgs'、'liblinear'、'sag'、'saga'l2 将只用 'newton-cg'

来尝试