欢迎关注我的公众号:AI_Engine。知乎,简书同名呦~今日头条搜索:极意就是在下啦!欢迎转发,评论噢!
Filter过滤法
过滤法通常在预处理阶段使用,特征选择完全独立于任何算法之外。
- 方差过滤
**本质:** 使用特征本身的方差来消除方差小于阈值的特征。
**API:** VarianceThreshold
**实例:**
import pandas as pd
data = pd.read_csv(r'../Data/digit recognizor.csv')
x = data.iloc[:,1:]
y = data.iloc[:,0]
x.shape
(42000, 784)
from sklearn.feature_selection import VarianceThreshold
selector = VarianceThreshold() # 实例化,默认方差为0
x_var = selector.fit_transform(x) # 获取删除不合格特征之后的新特征矩阵
x_var.shape
(42000, 708)
import numpy as np
median = np.median(x.var().values)
median
1352.286703180131
x_fc_var = VarianceThreshold(threshold=median).fit_transform(x)
x_fc_var.shape
(42000, 392)
%%timeit # 魔法命令,计算运行时间
# 当特征是二分类是,特征的取值就是伯努利随机变量,这些变量的方差可以计算为var[x] = p(1-p),其中x是特征矩阵,p是二分类特征中的一类在这个特征中所占的概率
# 若特征是伯努利随机变量,p=0.8,即二分类特征中某种分类占到80%以上的时候删除特征
x_bvar = VarianceThreshold(threshold=0.8 * (1-0.8)).fit_transform(x)
x_bvar.shape
(42000, 685)
- 卡方过滤
**本质:** 计算特征与标签的相关性,相关性可以根据卡方值和p值进行判定。一般情况下,p值<0.05或=0.01时,特征与标签即为相关,该特征可以保留。
API:chi2,SelectKBest
**实例:**
from sklearn.feature_selection import chi2
from sklearn.feature_selection import SelectKBest
from s