Scikits-learn:在Pipeline中使用自定义词汇
在我的scikit-learn管道中,我想给CountVectorizer()传递一个自定义的词汇表:
text_classifier = Pipeline([
('count', CountVectorizer(vocabulary=myvocab)),
('tfidf', TfidfTransformer()),
('clf', LinearSVC(C=1000))
])
但是,按照我的理解,当我调用
text_classifier.fit(X_train, y_train)
管道会使用CountVectorizer()的fit_transform()方法,这个方法会忽略我的词汇表。请问我该如何修改我的管道来使用我的词汇表呢?谢谢!
1 个回答
9
这是我刚刚修复的一个scikit-learn中的错误,修复时间是五分钟前。感谢你发现了这个问题。我建议你要么从Github上升级到最新版本,要么把向量化器和管道分开使用,作为一种临时解决办法:
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的版本中。