【问题标题】:How do to parameter tuning/cross-validation with Sklearn's pipeline?如何使用 Sklearn 管道进行参数调整/交叉验证?
【发布时间】:2018-05-17 05:43:48
【问题描述】:

我刚刚发现了 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),并使用交叉验证找到最佳组合。有没有办法在我们的管道外部指定它,以便它知道考虑所有可能的组合?如果是这样,如何做到这一点?

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用set_param 函数为管道中的各个步骤设置参数,并将key_name 作为<stepname>__<paramname> 传递(使用双下划线连接)。

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

    p = Pipeline([('vect', CountVectorizer(tokenizer=LemmaTokenizer(),
                             stop_words='english',
                             strip_accents='unicode',
                             max_df=0.5)),
              ('clf', MultinomialNB())
    g = GridSearchCV(p, 
            param_grid={
                  'vect__max_dfs':[0,3,0.4,0.5,0.6,0.7], 'vect__ngram_range':  [(1,1), (1,2), (2,2)]})
    g.fit(X, y)
    g.best_estimator_
    

    【讨论】:

      猜你喜欢
      • 2021-03-25
      • 2015-06-11
      • 2013-12-13
      • 2021-11-24
      • 2019-02-23
      • 2020-03-07
      • 2018-10-13
      • 2018-10-02
      • 2020-09-16
      相关资源
      最近更新 更多