私は、CountVectorizer、TfidfTransformer、およびMultinomial Naive Bayesクラシファイアからなるテキスト解析と分類のための簡単なパイプラインを持っています。パイプラインでのグリッド検索後のトランスパラメータの更新
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
text_clf = Pipeline([('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', MultinomialNB())])
私は今GridSearchCV(stop_wordsストップワードの前にロードされたリストが含まれている)を使用して、最良のパラメータを決定:
from sklearn.model_selection import GridSearchCV
parameters = {'vect__ngram_range': [(1,1), (1,2), (1,3)],
'vect__stop_words': [None, stop_words],
'tfidf__use_idf': [True, False],
'clf__alpha': np.arange(0.0, 1.05, 0.05)
}
grid_clf = GridSearchCV(text_clf, parameters, n_jobs = 1)
_ = grid_clf.fit(X_train, y_train)
私は今grid_clf.best_params_
を使用してモデルの最良のパラメータを見ることができます:
{'clf__alpha': 0.050000000000000003,
'tfidf__use_idf': True,
'vect__ngram_range': (1, 3),
'vect__stop_words': None}
私の質問は、グリッド検索によって返された最良のパラメータで更新されたパイプラインを取り戻すにはどうすればいいですか?私はパイプライン(CountVectorizerとTfidfTransformer)の最初の2つのステップを適切なパラメータで呼び出すことができます。私が発見した
回避策の一つは、明示的にグリッド検索によって返された最良のパラメータで新しいパイプラインを作成している:
multinomial_clf = Pipeline([('vect', CountVectorizer(stop_words=None, ngram_range=(1,3))),
('tfidf', TfidfTransformer(use_idf = True)),
('clf', MultinomialNB(alpha=0.05))])
_ = multinomial_clf.fit(X_train, y_train)
私は今multinomial_clf.steps
を使用してCountVectorizerとTfidfTransformerにアクセスすることができますが、私は簡単に存在する必要があります確信しています方法。
おかげであなたの助けのためにたくさん!私はパイプラインの変圧器を使用して変換する方法に関して、まだ混乱していますが