特征工程
sklearn建模
- 流程
工程
-
缺失值处理
-
特征选择
- 方法
- 特征是否发散:若不发散,如方差接近于0,说明特征差异很小,没什么区别效果
- 特征与目标的相关性:相关性越高,特征越好
- 形式
-
Filter过滤法:按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征
-
卡方检验:sklearn.feature_selection.chi2
SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)
-
互信息
def mic(x, y) m = minepy.MINE() m.compute_score(x, y) return m.mic(), 0.5 SelectKBest(lambda X, Y: array(map(lambda x:mic(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)
-
Wrapper包装法:根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征
- 递归特征消除法:sklearn.feature_selection.RFE
-
Embedded嵌入法:先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣
-
基于惩罚项的特征选择法:sklearn.feature_selection.SelectFromModel,可选择结合L1和L2惩罚项来线性建模
-
基于树模型(GBDT)的特征选择法
from sklearn.feature_selection import SelectFromModel from sklearn.ensemble import GradientBoostingClassifier # GBDT作为基模型的特征选择 SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)
-
-
- 方法
-
降维
- PCA
- 让映射后的样本具有最大的发散性
- 无监督
- sklearn.decomposition.PCA
- LDA:线性判别分析法
- 让映射后的样本具有最好的分类性能
- 有监督
- sklearn.discriminant_analysis.LinearDiscriminantAnalysis
- PCA