Python scikit-learn機器學習工具包學習筆記:feature_selection模塊


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_classif
selector = 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:決策樹特征選擇
基於決策樹算法做出特征選擇


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM