2015-06-18 9 views
5

में ट्रांसफार्मर कार्यों को एक्सेस करना sklearn.pipeline.Pipeline प्रलेखन, के अनुसार`sklearn` पाइपलाइनों

पाइपलाइन सभी तरीकों कि पाइप लाइन में पिछले आकलनकर्ता है, यानी अगर पिछले आकलनकर्ता एक वर्गीकारक है, पाइप लाइन हो सकता है एक वर्गीकृत के रूप में इस्तेमाल किया। यदि अंतिम अनुमानक एक ट्रांसफॉर्मर है, तो फिर भी पाइपलाइन है।

निम्न उदाहरण एक कस्टम के साथ एक डमी ट्रांसफार्मर, डमी समारोह f बनाता है:

class C: 
    def fit(self, X, y=None): 
     print('fit') 
     return self 
    def transform(self, X): 
     print('transform') 
     return X 

    def f(self): 
     print('abc') 

from sklearn.pipeline import Pipeline 
ppl = Pipeline([('C', C())]) 

मैं C ट्रांसफार्मर के f समारोह उपयोग करने में सक्षम होने के लिए उम्मीद कर रहा था, फिर भी AttributeError: 'Pipeline' object has no attribute 'f' में बुला ppl.f() परिणाम

क्या मैं प्रलेखन को गलत व्याख्या कर रहा हूं? क्या अंतिम ट्रांसफार्मर के कार्यों तक पहुंचने का कोई अच्छा और भरोसेमंद तरीका है?

उत्तर

4

Pipeline दस्तावेज कुछ चीजों को ओवरस्टेट करता है। इसमें सभी अनुमानक अपने अंतिम अनुमानक के तरीके हैं। इनमें predict(), fit_predict(), fit_transform(), transform(), decision_function(), predict_proba()... जैसी चीजें शामिल हैं।

यह किसी भी अन्य कार्यों का उपयोग नहीं कर सकता है, क्योंकि यह नहीं पता होगा कि पाइपलाइन में अन्य सभी चरणों के साथ क्या करना है। अधिकांश स्थितियों के लिए, आप (X) या संभवतः (X,y) पास करते हैं, और एक्स और/या वाई को fit_transform() या transform() के साथ पाइपलाइन में प्रत्येक श्रृंखला के माध्यम से गुजरना होगा।

यह काफी पिछले आकलनकर्ता, इस तरह का उपयोग करने के लिए आसान है:

ppl.steps[-1][1].f() 

लेकिन याद रखें कि ऐसा करने से पाइप लाइन में पिछले चरणों को छोड़कर है (यानी, अगर आप इसे X पारित ऐसा नहीं होगा पाइपलाइन में अपने मानक स्केलर या जो भी आप पहले कर रहे हैं उसके साथ स्केल किया जाए।)

संबंधित मुद्दे