数据处理与特征工程:One-Hot Encoder独热编码、Label Encoder标签编码、Binary Encoder二进制编码

本文详细介绍了数据预处理中的One-Hot编码、Label编码和Binary编码,强调了独热编码在处理离散特征中的重要性,同时讨论了何时使用和不使用这些编码方法,以及归一化的必要性。
摘要由CSDN通过智能技术生成

目录

一  OneHotEncoder独热编码

1.1 OneHotEncoder独热编码原理       

2.1. 为什么要独热编码OneHotEncoder?

2.3 独热编码优缺点

2.4 什么情况下(不)用独热编码?

2.5 什么情况下(不)需要归一化?

二  Label Encoder标签编码

三、Binary Encoder二进制编码


 

 

首先了解机器学习中的特征类别:连续型特征离散型特征     

       拿到获取的原始特征,必须对每一特征分别进行归一化,比如,特征A的取值范围是[-1000,1000],特征B的取值范围是[-1,1].如果使用logistic回归,w1*x1+w2*x2,因为x1的取值太大了,所以x2基本起不了作用。所以,必须进行特征的归一化,每个特征都单独进行归一化。

对于连续性特征:

  • 有界连续特征:线性放缩到[-1,1]
  • 标准化所有连续特性: 放缩到均值为0,方差为1

对于离散性特征:

  • 二值化分类/离散特征:对于离散的特征基本就是按照one-hot(独热)编码,该离散特征有多少取值,就用多少维来表示该特征。

 

一  OneHotEncoder独热编码

 

1.1 OneHotEncoder独热编码原理       

官方文档:点击就送

       独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。举例如下:

       假如有三种颜色特征:红、黄、蓝。 在利用机器学习的算法时一般需要进行向量化或者数字化。那么你可能想令 红=1,黄=2,蓝=3. 那么这样其实实现了标签编码,即给不同类别以标签。然而这意味着机器可能会学习到“红<黄<蓝”,但这并不是我们的让机器学习的本意,只是想让机器区分它们,并无大小比较之意。所以这时标签编码是不够的,需要进一步转换。因为有三种颜色状态,所以就有3个比特。即红色:1 0 0 ,黄色: 0 1 0,蓝色:0 0 1 。如此一来每两个向量之间的距离都是根号2,在向量空间距离都相等,所以这样不会出现偏序性,基本不会影响基于向量空间度量算法的效果。

      自然状态码为:000,001,010,011,100,101

      独热编码为:000001,000010,000100,001000,010000,100000

      来一个sklearn的例子:

from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])    # fit来学习编码
enc.transform([[0, 1, 3]]).toarray()    # 进行编码



array([[ 1.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  1.]])

数据矩阵是4*3,即4个数据,3个特征维度。

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值