Pythonモジュールscikit-learnを使用して単変量関数選択メソッドを適用して、回帰(すなわち連続値の応答値)データセットをsvmlight形式で適用しようとしています。回帰データのScikit-learn機能の選択
私はscikit-learnバージョン0.11で作業しています。
私は2つのアプローチを試みました。最初は失敗し、2番目は私のおもちゃのデータセットでは機能しましたが、実際のデータセットでは意味のない結果が得られると思います。
回帰データセットの上位N個の機能を選択するために適用できる適切な単変量機能の選択アプローチに関するアドバイスが必要です。私は、(a)f_regression関数をどのように働かせるか、(b)代替提案を聞くようにしたいと思います。
上記の2つのアプローチ:私はsklearn.feature_selection.f_regression(X、Y)を使用して試み
- 。
これは、次のエラーメッセージで失敗しました: :私はchi2(X、Y)を使用して試み
- "はTypeErrorコピー()正確に1引数(2所与)をとります"。私のおもちゃのデータセットの2つの応答値0.1と1.8がクラスラベルとして扱われていたためです。おそらく、これは多数の可能な応答値があり、各セル[特定の応答値と検査される属性の値を持つ]の数が実際のデータセットに対して意味のあるカイ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#ミリアンペア
1.8 1: 1.000000 2:1.000000#ヘクトパスカル
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#ミリガウス
1.8 2:1.000000# mH
'chi2'は分類用です。回帰の設定で動作させるには、Yの値をビンしなければなりません。 –
ありがとうlarsmans。私はそれが当てはまると思ったが、chi2が内部的に回帰y値を「背後にある」ものにするかもしれないと推測していた。私は現在のscikit-learnインストールが古いことを認識しているので、問題を再起する前に最新のバージョンでf_regressionを試してみます。 – user1735732