机器学习-数据处理、特征工程、特征选择 实操

数据处理、特征工程、特征选择

不太会粘代码和排版 so 以截图方式  不懂的地方欢迎留言/私聊

之后会把原理补充到这里

  • 载入



了解一下数据

  • head()
  • info()
  • describe()



注:std 标准差

基本数据处理

0.缺失值处理(两种方式)

  • pandas fillna
  • sklearn Imputer

可以用pandas的fillna函数


借助sklearn中的Imputer

from sklearn.preprocessing import Imputer


处理之后的数据缺失值已被 平均值 填充


常见的特征工程操作

                        

 数值型

0.幅度变换

  • apply+numpy
  • preprocessing scaler


1.统计值

  • max,min
  • quantile


2.四则运算(使用各字段进行加减乘除得到新的字段)

3.高次特征与交叉特征

  • preprocessing.PolynomialFeatures


4.离散化/分箱/分桶

  • pandas cut
  • pandas qcut


 类别型

5.OneHot encoding/独热向量编码

  • pandas get_dummies
  • OneHotEncoder()

 时间型

6.日期处理


  • pandas to_datetime


7.取出关键时间信息

  • .dt.month  取出月
  • .dt.dayofweek 取出星期
  • .dt.dayofyear  取出一年当中的第几天
  • ...



文本型

8.词袋模型

  • CountVectorizer

#默认的词袋 是把每个单个的单词 进行判断
#这里ngram_range=(1,3) 是  判断 1  2  3  个 的顺序的特征
#比如  I have a apple  通过 CountVectorizer(ngram_range=(1,3)) 词袋转换

#得: I  。I have 。I have a。 have 。have a。 have a apple 。a。apple。apple 



9.TF-IDF

  • TfidfVectorizer

10.组合特征(通过已知字段的组合关系得到新的特征字段)


特征选择

过滤式/Filter

  • SelectKBest


包裹型/wrapper

  • RFE

嵌入式/Embedded

  • SelectFromModel

原理

特征选择

意义 : 1冗余:部分特征的相关度太高,消耗计算性能

            2噪声:部分特征是对预测结果有负影响

特征选择与降维的区别:

            1前者剔除原本特征里和预测结果关系不大的 后者做降维操作 但是保存大部分信息

            2SVD和PCA 确实也能解决一定的高维度的问题

过滤式(filter)特征选择:

            1评估个体特征与预测结果值之间的相关程度 排序留下Top相关的特征部分

            2Pearson 相关系数 互信息 距离相关度

            3缺点:没有考虑到特征之间的关联程度的作用,可能把有用的关联特征误剔除

  包裹式(wapper)特征选择:

            1把特征选择看成是一个子集搜索问题 筛选各种特征子集 用墨模型评估效果

            2典型的包裹式算法:”递归特征删除法“

            3比如用逻辑回归 怎么做这个事情?如下:

                            1用全局特征跑一次模型

                            2根据线性模型的系数(体现相关性)删除5%-10%的若特征,观察准确率/auc的变化

                            3逐步进行 直到准确率/auc 出现大幅度下滑 停止

嵌入式(Embedded)特征选择:

            1根据模型来分析特征的重要程度(有别于上面的方式,是从生产的模型权重等)

            2最常见的方式为用正则化方式来做特征选择

            3举个例子: 最早电商用LR做点击率预估 在3-5亿维的系数特征上 用L1正则化的LR模型

                                剩余的2-3千万的特征 意味着其他的特征重要度不够。

                                L1 正则化:截断点效应 能够把不重要的 特征权重 拉低到0


特征处理示例