特征工程系列:(六)特征选择之方差过滤

有时候,数据集中的某一个特征,方差非常小,非常接近,这样导致的结果就是,没有区分度,那么这个特征其实就不是一个好的特征,因此方差过滤的思想就是,找到那些有区分度的特征(方差大)

from sklearn.feature_selection import VarianceThreshold

X = VairanceThreshold().fit_transform(X)  # VarianceThreshold 默认参数为0 
X_var0

如果一个特征服从伯努利分布,也就是说,这个特征只有两个类别。这个时候,也可以进行方差过滤,伯努利分布的方差计算公式为:\(\sigma = p(1-p)\), 其中\(p\)为莫一个类别的占比。

例如,一个特征\(x_1\),其中一个类别数量为80,另外一个类别数量为20,这个时候,这个特征的方差为:

\(0.8(1-0.8)\) , 在sklearn中,也可以直接使用方差过滤函数来对这类特征进行筛选。

X_bvar = VarianceThreshold(.8 * (1 - .8)).fit_transform(X)
X_bvar

方差过滤的目的主要是在维持算法表现的前提下,帮助算法刷选出更有分辨的特征,从而减轻计算成本,但是方差过滤不保证能够实现预期效果,所以在实践中,需要进行各种实验,通过真实实验效果去灵活的应用。

posted @ 2021-08-27 14:24  Neo0oeN  阅读(872)  评论(0编辑  收藏  举报