0

Metni sınıflandırmak için skLearn'ten Pipeline kullanıyorum. Bu örnekte Pipeline yılında Sklearn Boru Hattı'nda bireysel adımlar nasıl seçilir?

, ben o zaman eğitim verilerine uyacak ve tahmini yapmak, FeatureUnion ile sarılmış bir TfidfVectorizer ve bazı özel özellikler ve Pipeline adımlar gibi bir sınıflandırıcı vardır:

İşte
from sklearn.pipeline import FeatureUnion, Pipeline 
from sklearn.feature_extraction.text import TfidfVectorizer 
from sklearn.svm import LinearSVC 

X = ['I am a sentence', 'an example'] 
Y = [1, 2] 
X_dev = ['another sentence'] 

# classifier 
LinearSVC1 = LinearSVC(tol=1e-4, C = 0.10000000000000001) 

pipeline = Pipeline([ 
    ('features', FeatureUnion([ 
     ('tfidf', TfidfVectorizer(ngram_range=(1, 3), max_features= 4000)), 
     ('custom_features', CustomFeatures())])), 
    ('clf', LinearSVC1), 
    ]) 

pipeline.fit(X, Y) 
y_pred = pipeline.predict(X_dev) 

# etc. 

ben gerek TfidfVectorizer adımını hazırlayın ve hala onlarla deneyler yaptığım için custom_features'u bırakın. Buradaki fikir, tfidf adımını alarak boru hattını daha hızlı hale getirmektir.

Tüm Pipeline'u joblib.dump ile seçebiliyorum, ancak tek tek adımları nasıl atabilirim?

cevap

1

TfidfVectorizer turşu için kullanabilirsiniz:

joblib.dump(pipeline.steps[0][1].transformer_list[0][1], dump_path) 

ya:

joblib.dump(pipeline.get_params()['features__tfidf'], dump_path) 

dampingli nesneyi yüklemek için kullanabilirsiniz:

pipeline.steps[0][1].transformer_list[0][1] = joblib.load(dump_path) 

Maalesef yapabilirsiniz' Tahminciyi isme eklemek için get_params'un tersi olan set_params'u kullanın. PR#1769: enable setting pipeline components as parameters'daki değişiklikler birleştirilirse mümkün olacak!

+0

Pipeline içinden nasıl yüklerim? –

+0

Cevap vermeye çalıştım. – joeln

+0

Bu kadar kullanışlı bir özelliğin olmaması neredeyse inanılmaz bir şey. –