2016-01-15 18 views
6

Sınıflandırma görevi için bazı boru hatları oluşturdum ve her aşamada hangi bilgilerin mevcut olduğunu/depolandığını kontrol etmek istiyorum (örneğin, text_stats, ngram_tfidf). Bunu nasıl yapabilirim?Sklearn: Pipeline'larda hata ayıklamanın bir yolu var mı?

pipeline = Pipeline([ 
    ('features',FeatureUnion([ 
       ('text_stats', Pipeline([ 
          ('length',TextStats()), 
          ('vect', DictVectorizer()) 
         ])), 
       ('ngram_tfidf',Pipeline([ 
          ('count_vect', CountVectorizer(tokenizer=tokenize_bigram_stem,stop_words=stopwords)), 
          ('tfidf', TfidfTransformer()) 
         ])) 
      ])), 
    ('classifier',MultinomialNB(alpha=0.1)) 
]) 

cevap

0

Sen steps ve named_steps özellikleri kullanarak Pipeline() ağacı geçebilirler. İkincisi içeriği geçici olarak bir ayıklama adım eklemek kullanışlı zamanlarda bulmak

2

transformer_list özelliğini kullanan aynı şekilde araştırılabilir

FeatureUnion() bu listeden inşa bir sözlük verir iken eski küpe ('step_name', Step()) listesidir İlgilendiğiniz bilgileri basar. Örneğin üst kısmına örnek olarak, 1 sklearn örneğinden başlayarak, örneğin, ilk 5 satırı, şekli veya sınıflandırıcı olmadan önce bakmanız gereken her şeyi yazdırmak için bunu yapabilirsiniz. çağrıldı:

from sklearn import svm 
from sklearn.datasets import samples_generator 
from sklearn.feature_selection import SelectKBest 
from sklearn.feature_selection import f_regression 
from sklearn.pipeline import Pipeline 
from sklearn.base import TransformerMixin, BaseEstimator 

class Debug(BaseEstimator, TransformerMixin): 

    def transform(self, X): 
     print(pd.DataFrame(X).head()) 
     print(X.shape) 
     return X 

    def fit(self, X, y=None, **fit_params): 
     return self 

X, y = samples_generator.make_classification(n_informative=5, n_redundant=0, random_state=42) 
anova_filter = SelectKBest(f_regression, k=5) 
clf = svm.SVC(kernel='linear') 
anova_svm = Pipeline([('anova', anova_filter), ('dbg', Debug()), ('svc', clf)]) 
anova_svm.set_params(anova__k=10, svc__C=.1).fit(X, y) 

prediction = anova_svm.predict(X) 
İlgili konular