2011-07-07 16 views
5

W moich scikits nauczenia Pipeline, chciałbym przekazać niestandardowe słownictwo do CountVectorizer():Scikits nauczenia: Używaj własnego słownictwa wraz z Pipeline

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

Jednakże, o ile mi zrozumieć, gdy zgłoszę

text_classifier.fit(X_train, y_train) 

Pipeline korzysta z metody fit_transform() CountVectorizera(), która ignoruje myvocab. Jak mogę zmodyfikować mój Pipeline, aby korzystać z myvocab? Dzięki!

Odpowiedz

9

To był błąd w scikicie - dowiedz się, że naprawiłem five minutes ago. Dzięki za spostrzeżenie. Proponuję albo uaktualnić do najnowszej wersji z Github lub oddzielić Vectorizer z rurociągu jako obejście:

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: ponieważ ta odpowiedź została wysłana, ta poprawka została włączona w kilku scikit-learn wydania.

+1

Dzięki za poprawkę! – mathias