2016-01-15 10 views
6

मैंने वर्गीकरण कार्य के लिए कुछ पाइपलाइन बनाई हैं और मैं यह देखना चाहता हूं कि प्रत्येक चरण में कौन सी जानकारी मौजूद/संग्रहीत की जा रही है (उदा। Text_stats, ngram_tfidf)। मैं ये कैसे करूं।Sklearn: क्या पाइपलाइनों को डीबग करने का कोई तरीका है?

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)) 
]) 

उत्तर

0

आप steps और named_steps विशेषताओं का उपयोग कर अपने Pipeline() पेड़ पार कर सकते हैं। पूर्व tuples ('step_name', Step()) की एक सूची जबकि बाद आप एक शब्दकोश इस सूची से निर्माण देता

FeatureUnion() सामग्री transformer_list विशेषता का उपयोग

2

मैं अस्थायी रूप से एक डिबगिंग कदम जोड़ने के लिए उपयोगी समय पर इसे खोजने उसी तरह का पता लगाया जा सकता है जो उस जानकारी को प्रिंट करता है जिसमें आप रुचि रखते हैं। sklearn उदाहरण 1 से उदाहरण के शीर्ष पर बिल्डिंग, उदाहरण के लिए आप इसे पहली 5 लाइनों, आकार, या क्लासिफायरफायर से पहले जो कुछ भी देखना चाहते हैं उसे प्रिंट करने के लिए कर सकते हैं। कहा जाता है:

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) 
संबंधित मुद्दे