数据预处理:特征编码

在现实生活中获得的原始数据会包含非数值型特征,这些特征常常以字符串格式存储,但是数据分析模型需要的输入特征通常都是数值型的,因此我们需要对其进行数字编码,使用数字对离散型的取值进行表示。

数字编码

简单的数字编码
从0开始赋予特征的每一个取值一个整数。
等级型特征
可以按照特征取值从大到小进行整数编码来保证编码后的数据保留原有次序关系。如:{冠军,亚军,季军}可以表示为{0,1,2}。
名义型特征
使用上述编码时可能会产生一些问题,比如按照{0,1,2,3,4}给五个特征值赋值,但是这样会给原数据添加次序关系,到底1赋值给哪个特征值较好?
为了避免上述误导性结果,我们可以使用下面的编码方式。

One-Hot 编码

One-Hot编码将包含K个取值的离散型特征转换成K个二元特征(取0或1),例如特征“汽车品牌”:{路虎,吉利,奥迪,大众,奔驰},一共包含5个不同的值,我们可以将其编码为5个特征 f 1 f_1 f1 f 2 f_2 f2 f 3 f_3 f3 f 4 f_4 f4 f 5 f_5 f5,这5个特征与原始特征的取值一一对应,当原始特征取不同值时,转换后的特征取值如下表所示:

原始特征取值 f 1 f_1 f1 f 2 f_2 f2 f 3 f_3 f3 f 4 f_4 f4 f 5 f_5 f5
路虎10000
吉利01000
奥迪00100
大众00010
奔驰00001

这样就不会给名义型特征的取值人为地引入次序关系,但是One-Hot编码也有缺点,首先它会使特征维度显著增多,其次,它会增加特征之间的相关性,我们会发现如下线性关系:
f 1 + f 2 + f 3 + f 4 + f 5 = 1 f_1+f_2+f_3+f_4+f_5=1 f1+f2+f3+f4+f5=1
特征之间存在线性关系,会影响线性回归等模型的效果,因此我们需要对One-Hot编码进行一些改变,对于包含K个取值的离散型特征,将其转换成K-1个二元特征,这种编码方式称为哑变量编码(dummy encoding)。将上述例子编码为4个二元特征,当原始特征取不同取值时,转换后的特征取值如下表所示:

原始特征取值 f 1 f_1 f1 f 2 f_2 f2 f 3 f_3 f3 f 4 f_4 f4
路虎1000
吉利0100
奥迪0010
大众0001
奔驰0000
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值