微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有tfidf和count矢量化器的gridsearchcv

如何解决带有tfidf和count矢量化器的gridsearchcv

我想使用gridsearchcv进行参数调整。是否还可以使用gridsearchcv检查CountVectorizer或TfidfVectorizer效果最佳?我的主意:

pipeline = Pipeline([
           ('vect',TfidfVectorizer()),('clf',SGDClassifier()),])
parameters = {
'vect__max_df': (0.5,0.75,1.0),'vect__max_features': (None,5000,10000,50000),'vect__ngram_range': ((1,1),(1,2),3),'tfidf__use_idf': (True,False),'tfidf__norm': ('l1','l2',None),'clf__max_iter': (20,),'clf__alpha': (0.00001,0.000001),'clf__penalty': ('l2','elasticnet'),'clf__max_iter': (10,50,80),}

grid_search = gridsearchcv(pipeline,parameters,n_jobs=-1,verbose=1,cv=5)

我的想法:CountVectorizer与TfidfVectorizer相同,但use_idf = False且normalize = None。如果gridsearchcv将此参数作为最佳结果,则CountVectorizer是最佳选择。正确吗?

预先感谢您:)

解决方法

Pipeline中包含给定步骤及其相应名称后,您可以从参数网格访问它,并在网格中添加其他参数或矢量化器。您还可以在单​​个管道中具有网格列表:

from sklearn.feature_extraction.text import CountVectorizer

pipeline = Pipeline([
           ('vect',TfidfVectorizer()),('clf',SGDClassifier()),])
parameters = [{
    'vect__max_df': (0.5,0.75,1.0),'vect__max_features': (None,5000,10000,50000),'vect__ngram_range': ((1,1),(1,2),3),)  
    'tfidf__use_idf': (True,False),'tfidf__norm': ('l1','l2',None),'clf__max_iter': (20,),'clf__alpha': (0.00001,0.000001),'clf__penalty': ('l2','elasticnet'),'clf__max_iter': (10,50,80)
},{
    'vect': (CountVectorizer(),)
    # count_vect_params...
    'clf__max_iter': (20,80)
}]

grid_search = GridSearchCV(pipeline,parameters)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。