我想使用Python模塊scikit-learn以svmlight格式迴歸(即連續值響應值)數據集應用單變量特徵選擇方法。迴歸數據的Scikit學習功能選擇
我正在使用scikit-learn版本0.11。
我嘗試了兩種方法 - 第一種方法失敗,第二種方法適用於我的玩具數據集,但我相信會給真實數據集帶來無意義的結果。
我想諮詢一下適用的單變量特徵選擇方法,我可以將其應用於選擇迴歸數據集的前N個特徵。我想或者(a)想出如何使f_regression函數起作用,或者(b)聽取其他建議。
上面提到的兩種方法:
- 我嘗試使用sklearn.feature_selection.f_regression(X,Y)。
這失敗,出現以下錯誤消息: 「類型錯誤:複製()正好需要1個參數(2給出)」
- 我嘗試使用χ2(X,Y)。這個「工作」,但我懷疑這是因爲我的玩具數據集中的兩個響應值0.1和1.8被視爲類標籤?據推測,這不會爲真實數據集產生有意義的卡方統計量,其中將會有大量可能的響應值,並且每個單元格中的數量[對於被測試的屬性具有特定的響應值和值]將是低?
請在我的郵件末尾粘貼我的玩具數據集。
下面的代碼片段應該給出我上面描述的結果。
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#的mB
0.1 5:1.000000#三菱商事
1.8 1:1.000000 2:1.000000#毫達西
0.1 3:1.000000 4:1.000000#ME
0.1 3:1.000000#μF的
1.8 2:1.000000 4:1.000000 5:1.000000 6:1.000000#毫克
1.8 2:1.000000# mH
'chi2'僅用於分類。要使其在迴歸設置中工作,您必須存儲Y值。 – 2013-03-19 13:05:20
謝謝larsmans。我認爲是這種情況,但是在猜測chi2可能會在內部迴歸y值「幕後」。我意識到我目前的scikit-learn安裝是舊的,所以我會在再次提出問題之前嘗試使用最新版本的f_regression。 – user1735732 2013-03-20 09:20:44