2015-12-07 12 views
15

Nach dem Identifizieren der besten Parameter unter Verwendung einer pipeline und GridSearchCV, wie kann ich diesen Prozess später wieder verwenden pickle/joblib? Ich sehe, wie dies zu tun ist, wenn es ein einzelner Klassifikator ist ...Sklearn So speichern Sie ein aus einer Pipeline und GridSearchCV erstelltes Modell mit Joblib oder Pickle?

from sklearn.externals import joblib 
joblib.dump(clf, 'filename.pkl') 

Aber wie speichere ich dieses Gesamt pipeline mit den besten Parametern nach der Durchführung und ein gridsearch Abschluss?

Ich habe versucht:

  • joblib.dump(grid, 'output.pkl') - Aber das abgeladen jeden Gridsearch Versuch (viele Dateien)
  • joblib.dump(pipeline, 'output.pkl') - Aber ich glaube nicht, dass die besten Parameter enthält

X_train = df['Keyword'] 
y_train = df['Ad Group'] 

pipeline = Pipeline([ 
    ('tfidf', TfidfVectorizer()), 
    ('sgd', SGDClassifier()) 
    ]) 

parameters = {'tfidf__ngram_range': [(1, 1), (1, 2)], 
       'tfidf__use_idf': (True, False), 
       'tfidf__max_df': [0.25, 0.5, 0.75, 1.0], 
       'tfidf__max_features': [10, 50, 100, 250, 500, 1000, None], 
       'tfidf__stop_words': ('english', None), 
       'tfidf__smooth_idf': (True, False), 
       'tfidf__norm': ('l1', 'l2', None), 
       } 

grid = GridSearchCV(pipeline, parameters, cv=2, verbose=1) 
grid.fit(X_train, y_train) 

#These were the best combination of tuning parameters discovered 
##best_params = {'tfidf__max_features': None, 'tfidf__use_idf': False, 
##    'tfidf__smooth_idf': False, 'tfidf__ngram_range': (1, 2), 
##    'tfidf__max_df': 1.0, 'tfidf__stop_words': 'english', 
##    'tfidf__norm': 'l2'} 

Antwort

20
from sklearn.externals import joblib 
joblib.dump(grid.best_estimator_, 'filename.pkl') 

Wenn Sie Ihr Objekt in eine Datei dump - Verwendung:

joblib.dump(grid.best_estimator_, 'filename.pkl', compress = 1)