$$Jは評価指標のこと。$$取り込むことで評価が一番上がった特徴を用いることにする。step1step1~step3を繰り返す。kが我々の指定した数に到達したら、処理を終わらせる。得られた特徴の集合である。アニメーションに示すとこういうことである。(SFS)では、特徴を追加していったが、これは、削除していくだけである。(SFS)の亜種である。アルゴリズムは取り込むことで評価が上がるものを含むところまで同じで、その後に削除すべき特徴があるか探す工程を追加している。$$つまり、削除したときに最も性能がよかった特徴を覚えておく。step1変数を削除するときとしないときで、どちらのほうが評価が良いのか比較する。削除したほうが良いのなら、次のstepに進む。(SBS)と同じようなもの。(SFFS)は特徴追加していったが、これは削除していくだけである。選択手法の切り替え先程4つのアルゴリズムを挙げたが、SequentialFeatureSelector()の引数を変えることで、どのアルゴリズムを使うか決めることができる。forwardが特徴を増やしていくのか減らしていくのかを決める。=Trueで0から初めて特徴を増やしていく。floatingで3.SFFSや4.SBFSを使うかを指定できる。=Falseで1.SFSや2.SBSのただ単に追加/削除していくアルゴリズムが実行される。Score:0.9666666666666666面白いことにCVを変えると選ばれている特徴が変わる。selectionしてるときの詳細get_metric_dict()で詳細を取得してpandasに投げることでいろいろ見られます。0.00816497扱う特徴の数と性能のプロットひと目でわかる便利なやつが、簡単に可視化できる。StdDev)')plt.grid()plt.show()これを見る限りirisは全部の特徴をぶっこんだ方が良いかもしれない。ここで思うのが、こんな図みて良い特徴の数を探すのがめんどくさい。それぐらい自動でやってくれ。10)のように選ぶ特徴の数の範囲を指定することもできる。この場合、この範囲内で一番良い性能を示したものがsfs(自分で作ったインスタンス).k_feature_idx_に格納される。こっから先は、ソースコードの実行はなしでいきます。transformsklearn同様、fransformですぐさまいらない変数を省くことができる。sfs1.transform(X_train)といった感じで使える。GridSearchsklearnのPipelineに対応している。そのおかげでGridserchができる。refit=False)というようにすると、モデルのパラメータを変えたときに特徴をどれだけ使って予測するとどうなるのか簡単に書くことができる。さいごに最初に紹介した日本語記事で紹介されていた機能や、この変数選択の機能以外にもさまざまな便利機能がある。以下のリンクを適当に眺めるだけでも楽しい。お問い合わせはてなブログをはじめよう!aotamasakiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。