Python モジュール scikit-learn を使用して、svmlight 形式の回帰 (つまり、連続値の応答値) データセットに単変量特徴選択法を適用しようとしています。
scikit-learn バージョン 0.11 を使用しています。
最初のアプローチは失敗し、2番目のアプローチはおもちゃのデータセットで機能しましたが、実際のデータセットでは意味のない結果になると思います。
回帰データセットの上位 N 個の特徴を選択するために適用できる、適切な単変量特徴選択アプローチに関するアドバイスをお願いします。(a) f_regression 関数を機能させる方法を考え出すか、(b) 別の提案を聞きたいです。
上記の 2 つのアプローチ:
- sklearn.feature_selection.f_regression(X,Y)を使ってみました。
これは次のエラー メッセージで失敗しました:
- chi2(X,Y)を使ってみました。これは「うまくいきました」が、おもちゃのデータセットの 0.1 と 1.8 の 2 つの応答値がクラス ラベルとして扱われていたためだと思います。おそらく、これは実際のデータセットに対して意味のあるカイ 2 乗統計を生成せず、可能な応答値が多数存在し、[特定の応答値とテスト対象の属性の値を持つ] 各セルの数が次のようになります。低い?
このメッセージの最後に貼り付けられた私のおもちゃのデータセットを見つけてください。
次のコード スニペットは、上で説明した結果を提供するはずです。
from sklearn.datasets import load_svmlight_file
X_train_data, Y_train_data = load_svmlight_file(svmlight_format_train_file) #i.e. change this to the name of my toy dataset file
from sklearn.feature_selection import SelectKBest
featureSelector = SelectKBest(score_func="one of the two functions I refer to above",k=2) #sorry, I hope this message is clear
featureSelector.fit(X_train_data,Y_train_data)
print [1+zero_based_index for zero_based_index in list(featureSelector.get_support(indices=True))] #This should print the indices of the top 2 features
前もって感謝します。
リチャード
私の考案したsvmlightファイルの内容 - 明確にするために追加の空白行が挿入されています:
1.8 1:1.000000 2:1.000000 4:1.000000 6:1.000000#mA
1.8 1:1.000000 2:1.000000#mB
0.1 5:1.000000#mC
1.8 1:1.000000 2:1.000000#mD
0.1 3:1.000000 4:1.000000#mE
0.1 3:1.000000#mF
1.8 2:1.000000 4:1.000000 5:1.000000 6:1.000000#mG
1.8 2:1.000000#mH