类别特征的独热编码和二进制编码

我们在建模之前,一般需要对数据进行预处理。对于分类变量,一般模型不能直接作为变量输入,需要进行编码。分类变量常用编码方式如下:

有序变量:序号编码

无序变量:独热编码、二进制编码

下面为大家介绍独热编码和二进制编码之间的区别。

1)独热编码:独热编码会将变量的不同取值(N种取值)分别赋予一个只有1位为0的N维向量。例如星期,共有7个取值,独热编码会把它编码成一个7维稀疏向量。星期一表示为(1,0,0,0,0,0,0),星期二表示为(0,1,0,0,0,0,0),星期三表示为(0,1,0,0,0,0,0),星期日表示为(0,0,0,0,0,0,1)。

2)二进制编码:二进制编码分为两步,①先为变量的每一个取值赋予一个类别ID;②将ID对应的二进制编码作为结果。仍以星期为例,星期一的ID为1,二进制表示为001;星期二的ID为2,二进制表示为010;以此类推,可以得到变量所有取值的二进制编码。

二进制和独热编码的结果如下:

星期 类别ID 二进制编码 独热编码
星期一 1 (0,0,1) (1,0,0,0,0,0,0)
星期二 2 (0,1,0) (0,1,0,0,0,0,0)
星期三 3 (0,1,1) (0,0,1,0,0,0,0)
星期四 4 (1,0,0) (0,0,0,1,0,0,0)
星期五 5 (1,0,1) (0,0,0,0,1,0,0)
星期六 6 (1,1,0) (0,0,0,0,0,1,0)
星期日 7 (1,1,1) (0,0,0,0,0,0,1)

对比发现:二进制编码后向量长度要比独热编码短;独热编码的向量长度等于特征的取值个数,且每一个取值变量只有一位为0其余全部为1。

猜你喜欢

转载自blog.csdn.net/lz_peter/article/details/101219947