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

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

不太会粘代码和排版 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


特征处理示例


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

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