sci-kit learn(バージョン0.11とPythonバージョン2.7.3)を使用して、svmlight形式のバイナリ分類データセットから上位K個の機能を選択しています。
選択した機能の機能ID値を特定しようとしています。これは非常に簡単だと思いました-そしておそらくそうかもしれません!(feature-idとは、ここで説明するように、機能値の前の数値を意味します)
次のコードは、私がこれをどのように試みているかを正確に示しています。
from sklearn.datasets import load_svmlight_file
from sklearn.feature_selection import SelectKBest
svmlight_format_train_file = 'contrived_svmlight_train_file.txt' #I present the contents of this file below
X_train_data, Y_train_data = load_svmlight_file(svmlight_format_train_file)
featureSelector = SelectKBest(score_func=chi2,k=2)
featureSelector.fit(X_train_data,Y_train_data)
assumed_to_be_the_feature_ids_of_the_top_k_features = list(featureSelector.get_support(indices=True)) #indices=False just gives me a list of True,False etc...
print assumed_to_be_the_feature_ids_of_the_top_k_features #this gives: [0, 2]
明らかにassumed_to_be_the_feature_ids_of_the_top_k_features
、feature-id値に対応することはできません-(以下を参照)私の入力ファイルのfeature-id値は1から始まるためです。
さて、assumed_to_be_the_feature_ids_of_the_top_k_features
実際には、値の昇順でソートされた機能ID値のリストインデックスに対応しているのではないかと思います。私の場合、インデックス0はfeature-id=1
etcに対応します-コードがそれを教えてくれてfeature-id=1
、feature-id=3
選択されたように。
ただし、誰かがこれを確認または拒否できれば幸いです。
前もって感謝します。
contrived_svmlight_train_file.txtの内容:
1 1:1.000000 2:1.000000 4:1.000000 6:1.000000#mA
1 1:1.000000 2:1.000000#mB
0 5:1.000000#mC
1 1:1.000000 2:1.000000#mD
0 3:1.000000 4:1.000000#mE
0 3:1.000000#mF
0 2:1.000000 4:1.000000 5:1.000000 6:1.000000#mG
0 2:1.000000#mH
PS正しくフォーマットされていないことをお詫びします(ここで初めて)。これが読みやすく、理解しやすいことを願っています。