2011-07-07 6 views
5

En mis scikits-aprender Pipeline, me gustaría pasar un vocabulario personalizado para CountVectorizer():Scikits-aprender: Uso del vocabulario a medida junto con la tubería

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

Sin embargo, por lo que yo entiendo cuando llamo

text_classifier.fit(X_train, y_train) 

Pipeline utiliza el método fit_transform() de CountVectorizer(), que ignora myvocab. ¿Cómo podría modificar mi Pipeline para usar myvocab? ¡Gracias!

Respuesta

9

Esto fue un error en scikit-learn que arreglé five minutes ago. Gracias por detectarlo. Le sugiero que actualice a la nueva versión de Github, o separar el Vectorizer de la tubería como una solución:

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) 

ACTUALIZACIÓN: puesto que esta respuesta fue publicada, esta revisión se ha incorporado en varios scikit-learn lanzamientos.

+1

¡Gracias por la solución! – mathias

Cuestiones relacionadas