scikit-learnによる特徴選択
お盆ですな 昨日書いたの続き
Motivation
- 特徴選択がやりたい
- Wekaはお手軽
- でも僕はPythonでやりたい
ソースコード
さすがscikit-learn.めちゃシンプルにできた. 対象とするデータはirisデータセット ( UCI Machine Learning Repository: Iris Data Set )
詳細
scikit-learnでの特徴選択に関する関数はsklearn.feature_selection
に含まれている.今回は特徴量にランキングを付けて,そのランキングの上からk個を採用するというsklearn.feature_selection.SelectKBest
を採用*1.
次にランキングをつけるための評価関数を設定する必要がある.今回は相互情報量に基づいてランキングをつけるmutual_info_classif
を採用*2.
あとはSelectKBest(選択した評価関数, k=ベストいくつか).fit(データ行列, ラベル)
とすればOK.
もし,どの特徴を採用したか知りたい場合は,get_support()
関数を使うことでboolean配列として取得することができる.
最後に
- wrapper法がない..?
sklearn.feature_selection.SelectFromModel
がwrapper法か?と思ったけど,なんか違う…
- 「wrapper法はそんな難しくないんだから自分で組め」というアレなんだろうか…?
*1:他のものは API Reference — scikit-learn 0.19.0 documentation を参考に.多分Selectとついてるものが選択関連
*2:他のものは API Reference — scikit-learn 0.19.0 documentation を参考に.多分小文字で始まっているものが評価関数