1. 程式人生 > >Python scikit-learn機器學習:feature_selection模組

Python scikit-learn機器學習:feature_selection模組

sklearn.feature_selection模組的作用是feature selection,關鍵在於選擇合適的變數達到降維的目的,而feature extraction模組則是從資料集中利用某類演算法抽取具有代表性的特徵,例如tf-idf使用。

Univariate feature selection:單變數的特徵選擇

單變數特徵選擇的原理是分別單獨的計算每個變數的某個統計指標,根據該指標來判斷哪些指標重要。剔除那些不重要的指標。

sklearn.feature_selection模組中主要有以下幾個方法:
SelectKBest和SelectPercentile比較相似,前者選擇排名排在前n個的變數,後者選擇排名排在前n%的變數。而他們通過什麼指標來給變數排名呢?這需要二外的指定。
對於regression問題,可以使用f_regression指標。對於classification問題,可以使用chi2或者f_classif變數,此外選擇演算法內部會根據因變數y的存在與否自主選擇有監督或無監督的學習方式。
使用的例子:
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也是可以使用稀疏矩陣的。