2015-10-12 17 views
5

Sto usando una pipeline molto simile a quello dato in this example:recuperare caratteristiche intermedie da un oleodotto in Scikit (Python)

>>> text_clf = Pipeline([('vect', CountVectorizer()), 
...      ('tfidf', TfidfTransformer()), 
...      ('clf', MultinomialNB()), 
... ]) 

oltre che uso GridSearchCV per trovare le migliori stimatori su una griglia di parametri.

Tuttavia, desidero ottenere i nomi delle colonne del mio set di allenamento con il metodo get_feature_names() da CountVectorizer(). Questo è possibile senza l'implementazione di CountVectorizer() al di fuori della pipeline?

risposta

6

Utilizzando la funzione get_params(), è possibile accedere alle varie parti della pipeline e ai rispettivi parametri interni. Ecco un esempio di accesso 'vect'

text_clf = Pipeline([('vect', CountVectorizer()), 
        ('tfidf', TfidfTransformer()), 
        ('clf', MultinomialNB())] 
print text_clf.get_params()['vect'] 

rendimenti (per me)

CountVectorizer(analyzer=u'word', binary=False, decode_error=u'strict', 
    dtype=<type 'numpy.int64'>, encoding=u'utf-8', input=u'content', 
    lowercase=True, max_df=1.0, max_features=None, min_df=1, 
    ngram_range=(1, 1), preprocessor=None, stop_words=None, 
    strip_accents=None, token_pattern=u'(?u)\\b\\w\\w+\\b', 
    tokenizer=None, vocabulary=None) 

non ho montato la pipeline di tutti i dati in questo esempio, in modo da chiamare get_feature_names() a questo punto restituirà un errore.

2

solo per riferimento

The estimators of a pipeline are stored as a list in the steps attribute: 
>>> 

>>> clf.steps[0] 
('reduce_dim', PCA(copy=True, n_components=None, whiten=False)) 

and as a dict in named_steps: 
>>> 

>>> clf.named_steps['reduce_dim'] 
PCA(copy=True, n_components=None, whiten=False) 

da http://scikit-learn.org/stable/modules/pipeline.html