首页 > 其他分享 >在对数据进行预处理时,怎样处理类别型特征?

在对数据进行预处理时,怎样处理类别型特征?

时间:2023-02-21 17:08:08浏览次数:45  
标签:编码 序号 特征 独热 二进制 类别 预处理 怎样


什么样的特征是类别型特征?

类别型特征主要是指性别(男/女),体型(胖/瘦/适中)等只有在选项内取值的特征,类别型特征的原始输入通常是字符串形式,除了决策树等少数模型能够直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。

序号编码

序号编码通常用于处理类别间具有大小关系的数据,例如考试的成绩可以由好到坏分为(A、B、C、D)四档,序号编码会把他们按照大小关系表示为(1、2、3、4),这样变换完了之后依然保持着大小的关系。

然而当一组数据之间不再具有大小关系的时候,如血型(A、B、AB、O)四个属性值之间是没有大小关系的(此时可以认为是几个平行关系的属性,甚至是几个完全抽象的无法理解的数据),这样的数据是不可以使用序号编码的,此时就产生了下面的方法——独热编码。

独热编码

还是以上面的血型(A、B、AB、O)为例,可以表示为:

A:[1,0,0,0]

B:[0,1,0,0]

AB:[0,0,1,0]

O:[0,0,0,1]

独热编码的两个问题:

  • 独热编码使用稀疏矩阵来节省空间,独热编码下特征向量只有某一维取值为1,其他的位置均取0,因此可以利用稀疏矩阵有效地节省空间,并且目前大部分算法都接受稀疏向量形式的输入。
  • 在KNN算法中,高维空间中的两点之间的距离很难衡量;在逻辑回归中参数的数量会随着维度的增高而增加,容易引起过拟合的问题;维度过大的时候我们可以通过特征选择来降低维度。

二进制编码

二进制编码先给每个类别赋予一个类别ID,然后再将ID对应的二进制编码作为结果。依然用血型的例子可以得到如下的结果:

血型

类别ID

二进制表示

A

1

001

B

2

010

AB

3

011

O

4

100

相对于独热编码,二进制编码更加紧凑,节省存储空间。(效果未必更好)

统计编码

统计各类别在训练集中出现的频率,并将频率作为新的特征。
在某些情况下,具有统计意义的统计编码也是一种值得尝试的技巧。

标签:编码,序号,特征,独热,二进制,类别,预处理,怎样
From: https://blog.51cto.com/u_15969421/6076772

相关文章