特征选择

学习自 Feat_select(corr,rfe,rfecv,PCA)Seaborn,RandForest

概述

特征选择之前要先观察特征和label之间、特征与特征之间的相关性,sklearn中也封装有特征选择的包供使用,但是使用时仍然有一些需要注意的事项。

步骤

观察数据

  1. 确定label,找到不太适合做特征的列,如ID类和缺失值较多(15%)的列
  2. 大致观察数据的分布,可直接在dataframe上调用describe()
  3. 对数据归一化,为了特征选择时方便观察和对比
  4. 做出每一列的值与label的关系图,可以用sns.violinplot(),可以观察得到相关性较高的特征(变化趋势相同)和label区分度较高的特征(不同label分布不同)



    或者用sns.swarmplot(),可以更加直观的观察


  5. 可以用sns.jointplot()比较两两特征的相关性,相关性高的(如高于80%)只留一个,构建多个特征的相关性矩阵会更直观。


特征选择

有多种选择方法

  1. 利用相关性
    特征间相关性较高的只保留其一

  2. 单一特征选择
    比较特征与label之间的相关性,选择最高的topk个,可调用sklearn中的SelectKBest方法

  3. 递归缩减特征
    利用分类方法,会给每个特征指定一个权值,谁的权值绝对值最小,就将那个特征剔除,这样递归直到缩减到设定的特征数。可调用sklearn中的RFE

  4. 带交叉验证的递归缩减特征
    可以在递归缩减特征的过程中得到最优的特征个数。可调用sklearn中的FRECV

  5. 利用树模型
    gbdt、xgb、randomforeset都自带有特征评价功能,但是用之前必须保证特征间相关性较低

特征提取

文章使用PCA做特征提取,需要注意的是,做之前必须归一化,可绘图得到最优的维度,如下图找到变化突然变慢的拐点


总结

  1. 观察数据前对数据进行归一化,便于观察和对比
  2. seaborn,可以用作数据可视化,非常直观
  3. 特征选择时,特征间如果相关性较高,则只能保留一个,尤其是利用树模型找重要性的时候
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容