2015-06-18 4 views
5

`de trafo fonksiyonlarını erişme<a href="http://scikit-learn.org/stable/modules/pipeline.html" rel="noreferrer">sklearn.pipeline.Pipeline</a> belgelerine göre sklearn` boru hatları

boru hattı geçen tahmincisi bir sınıflandırıcı ise boru hattı geçen tahmincisi, yani Boru Hattı olabilir gelmiştir tüm yöntemleri vardır bir sınıflandırıcı olarak kullanılır. Son tahminci bir transformatör ise, yine, boru hattıdır.

Aşağıdaki örnekte bir özel bir kukla trafo, kukla işlevi f oluşturur:

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())]) 
Ben ancak AttributeError: 'Pipeline' object has no attribute 'f' içinde ppl.f() sonuçları çağırarak, C trafonun f fonksiyonunu erişmek mümkün bekliyordum

Ben belgelerine yanlış yorumlama muyum? Son transformatörün işlevlerine erişmek için iyi ve güvenilir bir yolu var mı?

cevap

4

Pipeline dokümantasyon hafifçe şeyler abartır. Onun son tahmincisi tüm tahmincisi yöntemleri vardır. Bunlar predict(), fit_predict(), fit_transform(), transform(), decision_function(), predict_proba()... gibi şeyleri içerir. o boru hattının diğer tüm adımların ne yapacağını bilemez çünkü

O başka işlevleri kullanamazsınız. Çoğu durumda, (X) veya muhtemelen (X,y) geçirirsiniz ve X ve/veya y, fit_transform() veya transform() ile boru hattındaki her zincirden geçirilmelidir.

Böyle son tahmincisi erişmek için oldukça kolaydır:, böyle olmaz

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

Ama bunu X geçirirseniz bunu yaparken, yani (boru hattında önceki adımları atlayarak olduğunu hatırlamak Daha önce boru hattı yapıyoruz ne olursa olsun StandardScaler veya ölçeklenebilir.)