2015-12-07 5 views
15

pipelineおよびGridSearchCVを使用して最良のパラメータを特定した後、pickle/joblibこのプロセスを後で再利用するにはどうすればよいですか?私はSklearnパイプラインとGridSearchCVから作成したモデルをJoblibまたはPickleを使用して保存する方法は?

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

しかし、どのように私はgridsearchを実行し、完了後に最良のパラメータを持つこの全体的なpipelineを保存しない...それは、単一の分類子だ時にこれを行う方法を参照してください?

は、私が試した:

  • joblib.dump(grid, 'output.pkl')を - しかし、それはすべてのgridsearch 試み(多くのファイル)
  • joblib.dump(pipeline, 'output.pkl')をダンプ - しかし、私はそれが最良のパラメータが含まれていないと思います

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

答えて

20

使用すると、1つのファイルにあなたのオブジェクトをダンプする場合- 使用:

joblib.dump(grid.best_estimator_, 'filename.pkl', compress = 1) 
関連する問題