簡體   English   中英

如何使用Sklearn的管道進行參數調整/交叉驗證?

[英]How do to parameter tuning/cross-validation with Sklearn's pipeline?

我剛剛發現了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),並使用交叉驗證找到最佳組合。 有沒有一種方法可以在我們的管道外部指定它,以便知道考慮所有可能的組合? 如果是這樣,將如何進行?

非常感謝您的指導和幫助!

您可以通過使用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_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM