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

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

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

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


序号编码

序号编码通常用于处理类别间具有大小关系的数据,例如考试的成绩可以由好到坏分为(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对应的二进制编码作为结果。依然用血型的例子可以得到如下的结果:

image.png

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


统计编码

统计各类别在训练集中出现的频率,并将频率作为新的特征。

在某些情况下,具有统计意义的统计编码也是一种值得尝试的技巧。

相关文章
|
6月前
|
机器学习/深度学习 数据采集 算法
大模型开发:什么是时间序列预测,以及如何处理此类数据?
时间序列预测分析历史数据以预测未来,涉及数据收集、预处理、模型选择(如ARIMA或DeepAR)、模型训练、评估及未来值预测。处理时序数据需注意时间依赖性,预处理和模型选择对准确性影响大。
139 3
|
6月前
|
机器学习/深度学习 数据可视化 PyTorch
零基础入门语义分割-地表建筑物识别 Task5 模型训练与验证-学习笔记
零基础入门语义分割-地表建筑物识别 Task5 模型训练与验证-学习笔记
499 2
|
移动开发 文字识别 算法
论文推荐|[PR 2019]SegLink++:基于实例感知与组件组合的任意形状密集场景文本检测方法
本文简要介绍Pattern Recognition 2019论文“SegLink++: Detecting Dense and Arbitrary-shaped Scene Text by Instance-aware Component Grouping”的主要工作。该论文提出一种对文字实例敏感的自下而上的文字检测方法,解决了自然场景中密集文本和不规则文本的检测问题。
1946 0
论文推荐|[PR 2019]SegLink++:基于实例感知与组件组合的任意形状密集场景文本检测方法
|
3月前
|
SQL 自然语言处理 算法
评估数据集CGoDial问题之计算伪OOD样本的软标签的问题如何解决
评估数据集CGoDial问题之计算伪OOD样本的软标签的问题如何解决
|
4月前
|
JavaScript
交叉类型的主要用途是表示对象的合成
交叉类型的主要用途是表示对象的合成
27 0
|
6月前
stata对包含协变量的模型进行缺失值多重插补分析
stata对包含协变量的模型进行缺失值多重插补分析
|
数据采集 机器学习/深度学习 数据处理
类别数据处理:你必须知道的技巧与方法
类别数据处理:你必须知道的技巧与方法
141 0
|
人工智能 自然语言处理 Python
ChatIE:通过多轮问答问题实现实命名实体识别和关系事件的零样本信息抽取,并在NYT11-HRL等数据集上超过了全监督模型
ChatIE:通过多轮问答问题实现实命名实体识别和关系事件的零样本信息抽取,并在NYT11-HRL等数据集上超过了全监督模型
ChatIE:通过多轮问答问题实现实命名实体识别和关系事件的零样本信息抽取,并在NYT11-HRL等数据集上超过了全监督模型
|
算法 Go
差异分析|DESeq2完成配对样本的差异分析
差异分析|DESeq2完成配对样本的差异分析
419 0
差异分析|DESeq2完成配对样本的差异分析
|
JSON 算法 数据格式
优化cv2.findContours()函数提取的目标边界点,使语义分割进行远监督辅助标注
可以看到cv2.findContours()函数可以将目标的所有边界点都进行导出来,但是他的点存在一个问题,太过密集,如果我们想将语义分割的结果重新导出成labelme格式的json文件进行修正时,这就会存在点太密集没有办法进行修改,这里展示一个示例:没有对导出的结果进行修正,在labelme中的效果图。
205 0
下一篇
无影云桌面