鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

sklearnのgrid_searchを使い最適なSVMパラメータを求める方法

前回のソースではgrid_searchの使い方が誤っていたので修正。

cross_validationはしてくれそう

fitを呼び出すときに、学習用データ、テスト用データに分割とか考えなくてデータ全部ぶち込めばよさそう。

SVMアルゴリズムごとにパラメータが違う場合

カーネル関数rbfとlinearで同時に検証する方法が分からなかった。
とりあえず、カーネル関数毎によびだせばいいか・・

clf = svm.SVC()
tuned_parameters = {'kernel': ['rbf'], 'gamma': [4, 2, 1, 1e-1, 1e-2, 1e-3, 1e-4],
                     'C': [1, 2, 4, 8, 16, 32, 64, 128 ,256, 512]}
grid = grid_search.GridSearchCV(estimator=clf, param_grid=tuned_parameters)
grid.fit(features, labels)
print (grid.grid_scores_)

tuned_parameters = {'kernel': ['linear'], 'C': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 50, 100, 500, 1000]}
grid = grid_search.GridSearchCV(estimator=clf, param_grid=tuned_parameters)
grid.fit(features, labels)
print (grid.grid_scores_)

ベストスコアは62.689(rbf,C=64,gamma=0.01)に後退してしまったけど、これが正しい値でしょう。
解析部分はこれでいい感じになったと思うのでデータの次元をもうすこし
増やしてみよう。欧州の株価を入れてみるかな。