如何使用Sklearn的管道进行参数调整/交叉验证?

时间:2017-12-03 18:38:02

标签: python parameters scikit-learn pipeline cross-validation

我刚刚发现了Sklearn的管道功能,我认为这对于情绪分析很有用。我已按以下方式定义了我的管道:

Pipeline([('vect', CountVectorizer(tokenizer=LemmaTokenizer(),
                         stop_words='english',
                         strip_accents='unicode',
                         max_df=0.5)),
          ('clf', MultinomialNB())

但是,通过上面的方式定义它,我不允许参数调整。让我们说我想看下面的max_dfs = [0,3,0.4,0.5,0.6,0.7]以及下面的n_gram范围= [(1,1),(1,2),(2) ,2),并使用交叉验证来找到最佳组合。有没有办法在管道外指定这个,所以它知道考虑所有可能的组合?如果是这样,将如何做?

非常感谢您的指导和帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用path=../parent/child/ path=${path%/} path=${path##*/} 函数为管道中的各个步骤设置参数,并将key_name作为set_param传递(使用双下划线连接)。

这可以与GridSearchCV结合使用,以识别从给定值最大化得分函数的参数组合

<stepname>__<paramname>