2011-07-07 54 views
5

在我scikits学习管道,我想自定义的词汇传递给CountVectorizer():Scikits学习:使用自定义的词汇连同管道

text_classifier = Pipeline([ 
    ('count', CountVectorizer(vocabulary=myvocab)), 
    ('tfidf', TfidfTransformer()), 
    ('clf', LinearSVC(C=1000)) 
]) 

但是,据我了解,当我打电话

text_classifier.fit(X_train, y_train) 

流水线使用CountVectorizer()的fit_transform()方法,该方法忽略myvocab。我如何修改我的管道以使用myvocab?谢谢!

回答

9

这是scikit-learn中的一个bug,我修复了five minutes ago。感谢您的发现。我建议你要么升级到从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) 

UPDATE:因为这个答案被张贴,此修复程序已在几个纳入scikit学习版本。

+1

感谢您的修复! – mathias