1.SelectKBest可以依据相关性对特征进行选择,保留k个评分最高的特征。
①方差分析
分类问题使用f_classif,回归问题使用f_regression。
f_classif:分类任务
跟目标的分类,将样本划分成n个子集,S1,S2,..,Sn,我们希望每个子集的均值μ1,μ2,...,μn不相等。
我们假设H0:μ1=μ2=...=μn,当然我们希望拒绝H0,所以我们希望构造出来f最大越好。所以我们可以通过第i个特征xi对分类进行预测。f值越大,预测值越好。
f_regression:回归任务
引用参考:https://blog.csdn.net/jetFlow/article/details/78884619
-
要计算f_regression中的ff值,我们首先要计算的是,这个就是i号特征和因变量y之间的样本相关系数。
-
我们计算的 ,才是f_regression中的ff值,服从F(1,n−2)F(1,n−2)分布。
-
ff值越大,i号特征和因变量y之间的相关性就越大,据此我们做特征选择。
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_classif
from sklearn.datasets import load_iris
# 特征选择
data = load_iris()
slectKBest = SelectKBest(f_classif,k=2)
dataK = slectKBest.fit_transform(data.data,data.target)
②χ²检验
卡方检验用于分类问题
③互信息
mutual_info_classif:分类问题
mutual_info_regression:回归问题
2.SelectPercentile 选择排名排在前n%的变量