パイプラインを用いたグリッドサーチ
Coding
パイプランをグリッドサーチで用いるには、サーチするパラメータグリッドを定義し、個々のパラメータを、ステップの名前に__(連続したアンダースコア)を続け、その後ろにパラメータを書いて指定します。このパラメータグリッドを使って、GridSearchCVを使えばよいです。
code: Python
from sklearn.pipeline import Pipeline
pipe.fit(X_train, y_train)
param_grid = {'svm__C': 0.001, 0.01, 0.1, 1, 10, 100, 'svm__gamma': 0.001, 0.01, 0.1, 1, 10, 100} grid = GridSearchCV(pipe, param_grid=param_grid, cv=5)
grid.fit(X_train, y_train)
print('Best cross-validation accuracy: {:.2f}'.format(grid.best_score_))
print('Test set score: {:.2f}'.format(grid.score(X_test, y_test)))
print('Best parameters: ', grid.best_params_)
--------------------------------------------------------------------------
Best cross-validation accuracy: 0.98
Test set score: 0.97
Best parameters: {'svm__C': 1, 'svm__gamma': 1}
--------------------------------------------------------------------------
単純なグリッドサーチと異なり、交差検証の個々の分割に対して、訓練用のパートのみを対象としてMinMaxScalerをfitし直すので、テスト用のパートから情報がパラメータサーチに漏れることはありません。
https://gyazo.com/41a250855c7294b3de3cd939ec4910c5
Pipelineクラスが適用できるのは、前処理とクラス分類に限られているわけではありません。例えば、特徴量抽出、特徴量選択、スケール変換、クラス分類と4ステップのパイプラインを作ることもできます。