去掉方差较小的特征
方差阈值(VarianceThreshold)是特征选择的一个简单方法,去掉那些方差没有达到阈值的特征。默认情况下,删除零方差的特征,例如那些只有一个值的样本。
假设我们有一个有布尔特征的数据集,然后我们想去掉那些超过80%的样本都是0(或者1)的特征。布尔特征是伯努利随机变量,方差为 p(1-p)。
from sklearn.feature_selection import VarianceThreshold
X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]
sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
sel.fit_transform(X)
array([[0, 1],
[1, 0],
[0, 0],
[1, 1],
[1, 0],
[1, 1]])
VarianceThreshold去掉了第一列,第一列里面0的比例为5/6。
单变量特征选择
单变量特征选择通过单变量统计检验选择特征,可以看作一个估计器的预处理步骤。Sklearn将特征选择视为日常的转换操作:
SelectBest 只保留 k 个最高分的特征;
SelectPercentile 只保留用户指定百分比的最高得分的特征;
使用常见的单变量统计检验:假正率SelectFpr,错误发现率selectFdr,或者总体错误率SelectFwe;
GenericUnivariateSelect 通过结构化策略进行特征选择&