在我的scikits-learn Pipeline中,我想将一个自定义词汇表传递给CountVectorizer():
text_classifier = Pipeline([ ('count', CountVectorizer(vocabulary=myvocab)), ('tfidf', TfidfTransformer()), ('clf', LinearSVC(C=1000))])
然而,据我所知,当我调用
text_classifier.fit(X_train, y_train)
Pipeline使用CountVectorizer()的fit_transform()方法,这会忽略我的词汇表myvocab。我该如何修改我的Pipeline来使用myvocab?谢谢!
回答:
这是一个我在五分钟前修复的scikit-learn中的bug,谢谢你发现了这个问题。我建议你要么从Github升级到最新版本,要么作为临时解决方案,将向量化器从Pipeline中分离出来:
count = CountVectorizer(vocabulary=myvocab)X_vectorized = count.transform(X_train)text_classifier = Pipeline([ ('tfidf', TfidfTransformer()), ('clf', LinearSVC(C=1000))])text_classifier.fit(X_vectorized, y_train)
更新:自从这个回答发布以来,这个修复已被纳入多个scikit-learn版本中。