cross validation、Stratified 10-fold CV
明日は勉強会に参加予定なので自習はできそうにない
というか今月は珍しく既に4つほど勉強会にエントリーしてる
勉強会ってほぼ必ず短時間飲み会がついてるけど、費用どのくらいかかってるんだろう
10-fold CV
- sklearnからKFoldをimportするともうK-fold CVが使える
- 引数でKの値を指定可能、今回は10で指定
- ただKFoldをそのまま使うとStratifiedされていないため、10個に分けられたデータセットの中にはクラスバランスが悪いものが存在する
- そういった場合にはStratifiedKFoldを使用する
- cross validationの精度を計算するためのオブジェクト「cross_val_score」を利用する
- コードが短くて済み、かつ平均と標準偏差も出してくれるので精度が簡単に出せる
# 精度計算ができるcross_val_scoreを使用する、cvで分割数を指定しStratifiedもしてくれるfrom sklearn.model_selection import cross_val_score
ave_score = cross_val_score(clf, X, y, cv=10)print("{0:4.2f} +/- {1:4.2f} %".format(ave_score.mean() * 100, ave_score.std()*100))- 結果
- 94.91 +/- 1.61 %
学んだこと
- K-fold CVは引数でいくつに分割するかを簡単に指定可能、すごい便利
- K-fold CVの精度を計算するのもcross_val_scoreで楽できるなんてすごい
- Python、というかsklearnのライブラリがこんなにも便利だと日々実感する