Sau khi xác định các thông số tốt nhất bằng cách sử dụng pipeline
và GridSearchCV
, 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'}