Scikits-learn:将自定义词汇与Pipeline一起使用

时间:2011-07-07 09:08:20

标签: python machine-learning scikits scikit-learn

在我的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。我怎么能修改我的管道来使用myvocab?谢谢!

1 个答案:

答案 0 :(得分:9)

这是scikit-learn中的一个错误,我修复了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)

更新:由于此答案已发布,此修补程序已合并到多个scikit-learn版本中。