SVMはパラメータが多すぎる。全部試すとか手間が掛かり過ぎる。
そんな悩みを解決したいグリッドサーチの使い方です。
from sklearn.svm import SVC from sklearn.grid_search import GridSearchCV def main(): _s = GridSearchCV( SVC(), { "C": [0.1, 0.5, 1.0, 1.5], "kernel": ["rbf", "linear"], "gamma": [1, 1e-2, 1e-3, 1e-4], } ) _s.fit( [ [1, 0, 0, 0, 0], [1, 1, 0, 0, 0], [1, 1, 0, 0, 1], [0, 1, 1, 1, 1], [0, 0, 0, 1, 1], [0, 0, 1, 1, 1], [0, 0, 1, 1, 1] ], [1, 1, 1, 0, 0, 0, 0] ) print(_s.best_estimator_) print(_s.best_score_) if __name__ == "__main__": main()
上のコードだとCとカーネルとガンマだけを設定してますけど、SVCで指定できるパラメータは全部設定できます。
出力のところは見やすいように成形してます。便利すぎる。。。
全部のパラメータを1回で指定できるわけでもなくて、併用できないものは途中でエラー吐いたりもします。それでも、かなり実施回数は減らせます。
$ python grid.py SVC( C=0.5, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=1, kernel='linear', max_iter=-1, probability=False, random_state=None, shrinking=True, tol=0.001, verbose=False ) 1.0