数据和特征决定了机器学习的上线,而模型和算法只是逼近这个上限而已。特征工程目的是最大限度从数据中提取特征以供模型和算法使用。特征处理是特征工程的核心部分,sklearn提供了较为完整的特征处理方法,包括数据预处理、特征选择、降维等。https://www.jianshu.com/p/7066558bd386

图片说明

使用sklearn中是的preprocessing库来进行数据预处理
1、数据预处理
通过特征提取,能够获得未经处理的特征,这时的特征可能有以下的问题:
量纲不同
定性特征不能直接使用
存在缺失值
存在异常值
信息利用率低:不同的机器学习算法和模型对数据中信息的利用是不同的,之前提到在线性模型中,使用对定性特征哑编码可以达到非线性的效果。类似地,对定量变量多项式化,或者进行其他的转换,都能达到非线性的效果。

使用sklearn中的feature_selection库来进行特征选择
2、特征选择
数据预处理之后,选择有意义的特征输入模型进行训练,通常从两个方面选择特征:
特征与目标的相关性:与目标相关性高的特征优先选择;
特征是否发散:如果一个特征方差接近0,说明每个样本在这个特征上没有区别,所以这个特征对于样本的区分没有什么用;
特征选择的方法有三种
1)Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者选择阈值的个数,选择特征;
方差选择法:计算各个特征的方差,选择方差大于阈值的特征
相关系数法:计算各个特征对目标值的相关系数的P值
卡方检验
互信息法
2)Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征;
递归特征消除法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。
使用feature_selection库的RFE类
3)Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是通过训练来确定特征的优劣。
基于惩罚项的特征选择法
基于树模型的特征选择法

3、降维
PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。
1)主成分分析法(PCA)
使用decomposition库的PCA类
2)线性判别分析法(LDA)
使用lda库的LDA类