2015-12-07 14 views
15

Sau khi xác định các thông số tốt nhất bằng cách sử dụng pipelineGridSearchCV, làm cách nào để pickle/joblib quy trình này được sử dụng lại sau? Tôi thấy làm thế nào để làm được điều này khi đó là một phân loại đơn ...Sklearn Làm thế nào để lưu một mô hình tạo ra từ một đường ống và GridSearchCV sử dụng Joblib hoặc Pickle?

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

Nhưng làm thế nào để tiết kiệm tổng thể pipeline này với các thông số tốt nhất sau khi thực hiện và hoàn thành một gridsearch?

tôi đã cố gắng:

  • joblib.dump(grid, 'output.pkl') - Nhưng đó đổ mỗi gridsearch nỗ lực (nhiều file)
  • joblib.dump(pipeline, 'output.pkl') - Nhưng tôi không nghĩ rằng có chứa các thông số tốt nhất

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

Trả lời

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

Nếu bạn muốn kết xuất đối tượng vào một tệp - sử dụng:

joblib.dump(grid.best_estimator_, 'filename.pkl', compress = 1) 
Các vấn đề liên quan