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模型上都翻車了