数据预处理:https://www.jianshu.com/p/ffbf2c0d0c94
过滤法
方差过滤:排除数值波动小的,from sklearn.feature_selection import VarianceThreshold
相关性过滤
卡方检验的本质是推测两组数据之间的差异,检验原假设是”两组数据是相互独立的”。
卡方检验返回卡方值和P值两个统计量,可以根据P值筛选,p<=0.05或0.01,说明两组数据是相关的。
从特征工程的角度,希望选取卡方值很大,p值小于0.05的特征,即和标签是相关联的特征。
F检验,又称ANOVA,方差齐性检验,是用来捕捉每个特征与标签之间的线性关系的过滤方法。
即可以做回归也可以做分类,因此包含feature_selection.f_classif(F检验分类)和feature_selection.f_regression(F检验回归)两个类。
返回F值和p值两个统计量。和卡方过滤一样,选取p值小于0.05或0.01的特征,这些特征与标签时显著线性相关的。
互信息法:
嵌入法:嵌入法是一种让算法自己决定使用哪些特征的方法,即特征选择和算法训练同时进行。
sklearn.feature_selection.SelectFromModel:
包装法:
包装法也是一个特征选择和算法训练同时进行的方法,但使用一个目标函数作为黑盒来选取特征,
而不是输入某个评估指标或统计量的阈值。区别于过滤法和嵌入法的一次训练解决所有问题,
包装法要使用特征子集进行多次训练,计算成本位于嵌入法和过滤法之间。
最典型的目标函数是递归特征消除法(Recursive feature elimination, 简写为RFE);sklearn.feature_selection.RFE
它是一种贪婪的优化算法,旨在找到性能最佳的特征子集。
它反复创建模型,并在每次迭代时保留最佳特征或剔除最差特征,
下一次迭代时,会使用上一次建模中没有被选中的特征来构建下一个模型,直到所有特征都耗尽为止。