from sklearn.feature_selection import VarianceThreshold X=[[100,1,2,3], [100,4,5,6], [100,7,8,9], [101,11,12,13]] selector=VarianceThreshold(1)#方差为1 selector.fit(X)#训练 print("Variances is %s"%selector.variances_) print("After transform is %s"%selector.transform(X))#筛选结果 print("The surport is %s"%selector.get_support(True))#保留下来哪些列 print("After reverse transform is %s"%selector.inverse_transform(selector.transform(X)))
使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
方差过滤可以使用在巨大的稀疏矩阵中,稀疏矩阵中可以考虑将方差的过滤阈值设置为0,这样就会将稀疏矩阵中大量特征值为0的特征过滤掉
在我自己的数据集里特征比较少,才十几个,方差筛选后不到十个,结果在各种boost模型上都翻车了