[英]Hyperparameter-tuning (Hyperas) and Cross-Validation with Pipeline-Preprocessing
[英]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.