我有一个用于文本分析和分类的简单管道,包括一个CountVectorizer、一个tfiddtransformer,最后是一个多项式naivebayes分类器。
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包含以前加载的stop words列表):
^{pr2}$我现在可以使用grid_clf.best_params_
查看模型的最佳参数:
{'clf__alpha': 0.050000000000000003,
'tfidf__use_idf': True,
'vect__ngram_range': (1, 3),
'vect__stop_words': None}
我的问题是:我怎样才能得到一个更新的管道,其中包含网格搜索返回的最佳参数?我希望能够使用适当的参数调用管道的前两个步骤(CountVectorizer和tfiddTransformer)。
我发现的一个解决方法是显式地创建一个新管道,其中包含网格搜索返回的最佳参数:
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和tfiddTransformer,但我确信一定有更简单的方法。
非常感谢你的帮助!
使用
grid_clf.best_estimator_
可以找到具有最佳参数的管道然而,我仍然困惑于如何利用管道的变压器进行改造。前两个步骤实现转换方法,而最后一个步骤不实现。但如果我试着打电话:
^{pr2}$我得到以下错误:
谢谢你的帮助
相关问题 更多 >
编程相关推荐