数据预处理之独热编码、标签编码与哑编码

数据分类

我们在用模型去解决机器学习问题的时候,首先很重要的过程就是对特征的预处理。我们的数据可以分为连续型和离散型。
对于连续型数据,我们一般的做法是对其进行标准化或者归一化;对于离散型数据,我们基本就是按照one-hot(独热)编码,该离散特征有多少取值,就用多少维来表示该特征。

标签编码(LabelEncoder)

LabelEncoder是用来对分类型特征值进行编码,即对不连续的数值或文本进行编码。例如:人的性别 [male, female],male用“0”表示,female用“1”表示,来自的国家 [from Europe, from US, from Asia]等这些特征均可以采用整数的形式进行编码。

LabelEncoder在某些情况下很有用,但是场景限制很多。例如: [male, from US] 可表示成 [0, 1] ,[female, from Asia] 可表示成[1, 2]。但是,这些整数形式的表示不能直接作为某些机器学习算法输入,因为有些机器学习算法是需要连续型的输入数据,同一列数据之间数值的大小可代表差异程度。比如 [0, 1]与[0,2]的特征差异比[0, 0]与[0,2]之间的差异要大,但事实上它们的差异是一样的,都是来自不同的国家。再比如有[dog,cat,dog,mouse,cat],我们把其转换为[1,2,1,3,2]。这里就产生了一个奇怪的现象:dog和mouse的平均值是cat。所以目前还没有发现标签编码的广泛使用。

独热编码(OneHotEncoder)

一个解决办法就是采用OneHotEncoder,这种表示方式将每一个分类特征变量的m个可能的取值转变成m个二值特征,对于每一条数据这m个值中仅有一个特征值为1,其他的都为0。

在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。使用one-hot编码,将离散特征的取值扩展到了欧式空间,这会让特征之间的距离计算更加合理。编码后的特征可以跟对连续型特征的归一化方法一样&#

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值