2015-12-07 40 views
15

Dopo aver identificato i parametri migliori utilizzando pipeline e GridSearchCV, come faccio a riutilizzare questo processo per il periodo ? Vedo come fare questo, quando si tratta di un unico classificatore ...Sklearn Come salvare un modello creato da una pipeline e GridSearchCV utilizzando Joblib o Pickle?

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

Ma come faccio a salvare questo complesso pipeline con i migliori parametri dopo l'esecuzione e il completamento di un gridsearch?

ho provato:

  • joblib.dump(grid, 'output.pkl') - Ma che oggetto di dumping ogni gridsearch tentativo (molti file)
  • joblib.dump(pipeline, 'output.pkl') - Ma io non credo che contiene i migliori parametri

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'} 

risposta

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

Se si desidera eseguire il dump l'oggetto in un unico file - utilizzo:

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