標籤:extract sed 例子 str ida error cto 其他 parse
sklearn.feature_selection模組的作用是feature selection,而不是feature extraction。
Univariate feature selection:單變數的特徵選取單變數特徵選取的原理是分別單獨的計算每個變數的某個統計指標,根據該指標來判斷哪些指標重要。剔除那些不重要的指標。 sklearn.feature_selection模組中主要有以下幾個方法:SelectKBest和SelectPercentile比較相似,前者選擇排名排在前n個的變數,後者選擇排名排在前n%的變數。而他們通過什麼指標來給變數排名呢?這需要二外的指定。對於regression問題,可以使用f_regression指標。對於classification問題,可以使用chi2或者f_classif變數。使用的例子:from sklearn.feature_selection import SelectPercentile, f_classifselector = SelectPercentile(f_classif, percentile=10) 還有其他的幾個方法,似乎是使用其他的統計指標來選擇變數:using common univariate statistical tests for each feature: false positive rate SelectFpr, false discovery rate SelectFdr, or family wise error SelectFwe. 文檔中說,如果是使用疏鬆陣列,只有chi2指標可用,其他的都必須轉變成dense matrix。但是我實際使用中發現f_classif也是可以使用疏鬆陣列的。
Recursive feature elimination:迴圈特徵選取不單獨的檢驗某個變數的價值,而是將其聚集在一起檢驗。它的基本思想是,對於一個數量為d的feature的集合,他的所有的子集的個數是2的d次方減1(包含空集)。指定一個外部的學習演算法,比如SVM之類的。通過該演算法計算所有子集的validation error。選擇error最小的那個子集作為所挑選的特徵。 這個演算法相當的暴力啊。由以下兩個方法實現:sklearn.feature_selection.RFE,sklearn.feature_selection.RFECV
L1-based feature selection:該思路的原理是:在linear regression模型中,有的時候會得到sparse solution。意思是說很多變數前面的係數都等於0或者接近於0。這說明這些變數不重要,那麼可以將這些變數去除。
Tree-based feature selection:決策樹特徵選取基於決策樹演算法做出特徵選取
Python scikit-learn機器學習工具包學習筆記:feature_selection模組