特征工程(一)——特征归一化及类型特征处理

“巧妇难为无米之炊”,放到数据行业,“巧妇”是模型,“米”就是数据与特征。正如业界经典的一句话"Garbage in, garbage out",如果没有充足数据、合理的特征,再强大的模型结构也难以得到令人满意的结果。

实际工作中,特征工程是去除数据中的杂质,提炼为更合理的特征,供算法和模型使用。特征工程主要包括特征归一化、类型特征的表示、特征选择及非结构化数据的表示。本文主要介绍特征归一化及类型特征的表示。

特征归一化

为了消除特征之间量纲的影响,使数据处于同一数量级具有可比性,需要进行特征归一化。例如,分析一个顾客消费粘性与近三个月消费次数、消费金额的关系。消费次数一般最多几十次,但消费金额可能几千上万,那消费粘性就会更受消费金额的影响。想要更准确的结果,需要将特征进行归一化,使特征在同一个数量级下。最常用的归一化方法是最大最小归一化、零均值归一化。

1. 最大最小归一化是对数据进行线性变换,使结果映射到[0,1]。归一化公式为
图片

其中,x为原始数据,为数据最小值,为数据最大值。
python实现方法:

import pandas as pd
import numpy as np
df= pd.DataFrame({'num':np.random.randint(0,50,size=10),                
  'money':np.random.randint(0,3000,size=10)})
print(df)
图片
df1= (df-df.min())/(df.max()-df.min())
print(df1)
  1. 零均值归一化

    零均值z-score 归一化将数据映射到均值为0,标准差为1的分布上。归一化公式定义为:

图片

python实现方法:

df2= (df-df.mean())/df.std()
print(df2)
图片
  1. 特征归一化适用情况
    归一化的数据,梯度下降可以更快找到最优解。因此,梯度下降求解的模型需要归一化,如线性回归、逻辑回归、支持向量机、神经网络等模型。但是决策树模型并不适用,信息增益跟是否经过归一化无关。

类别特征处理

类别特征原始数据是字符串的,如性别(男、女)等。因为很多模型对各数据进行衡量时,需要依赖数值关系,因此要将类别型特征处理成数值特征。类别型编码常用处理方式有序号编码、独热编码、二进制编码。

1. 序号编码
序号编码适用于数据类别间有大小关系的,如销售金额分为高、中、低三档,可以分别用3,2,1表示。

2. 独热编码 OneHot-Encoding
如果数据类别没有大小关系,如订单来源取值为3个(淘宝、京东、拼多多),独热编码将订单来源表示为3维稀疏变量。淘宝为[1,0,0],京东为[0,1,0],拼多多为[0,0,1]。
如果类别取值过多,独热编码要注意以下问题:
(1) 用稀疏向量表示节省空间
(2) 配合特征选择降低维度

独热编码python实现:

df = pd.DataFrame({'source':['淘宝','京东','拼多多'],
'amount':[20,5,30]})
pd.get_dummies(df,prefix='source',prefix_sep='_')
image.png
  1. 二进制编码以订单来源淘宝、京东、拼多多为例,淘宝、京东、拼多多的ID分别为1、2、3,则二进制表示分别为001、010、011。

你可能感兴趣的:(特征工程(一)——特征归一化及类型特征处理)