web-dev-qa-db-ja.com

Sklearn JoblibまたはPickleを使用してパイプラインとGridSearchCVから作成されたモデルを保存する方法

pipelineおよびGridSearchCVを使用して最適なパラメーターを特定した後、このプロセスを後で再利用するにはどうすればpickle/joblibできますか?単一の分類子の場合、これを行う方法がわかります...

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

しかし、pipelineを実行および完了した後、この全体[gridsearchを最適なパラメーターで保存するにはどうすればよいですか?

私は試した:

  • 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'}
_
26
Jarad
from sklearn.externals import joblib
joblib.dump(grid.best_estimator_, 'filename.pkl')

オブジェクトを1つのファイルにダンプする場合は、次を使用します。

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