【sklearn实例】4--特征工程之离散值编码

本文探讨了离散特征编码的重要性,特别是在机器学习算法中的作用。介绍了编码方法,如LabelEncoder、get_dummies和OneHotEncoder,强调了编码在处理无序和有序类特征时的区别。同时,讨论了何时不需要编码,并提供了编码后数据稀疏性的优点。文章通过实例详细解释了各种编码方法的使用,并指出了get_dummies在处理DataFrame时的便利性和OneHotEncoder的通用性。
摘要由CSDN通过智能技术生成

离散特征

离散特征变量类型可以分为有序类和无序类。

无序类,价值相等且可区分,没有等级、顺序、排序、好坏等逻辑关系,各变量相互独立:性别(男/女)、颜色(赤橙黄绿青蓝紫)、登机口(A/B/C);

有序类:各变量有级别大小等逻辑关系:尺码(L/XL/XXL)、学历(高/中/低)

为何要编码

无序类:为何不能直接对特征进行赋值,比如male1,female0。这是不科学的,因为这样一来就存在了大小关系,在算法学习时就会利用其大小关系来训练和预测。任何两个数值如1和0,都无法表示出male与female的价值相等且可区分的平行独立的关系,但这样就可以了:male[0,1],female[1,0])

有序类:比如学历变量是博士、硕士、本科用3-2-1来分别表示,那么问题来了:为何可以用3-2-1来表示而不能用30-20-10来表示?如果1000-900-800呢?事实是任何数字的排序都无法表达出变量的差异性。

  1. 在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间;对离散型特征进行one-hot编码是为了让距离的计算显得更加合理。
  2. 编码后的特征会扩维(如性别编码后变成male[0,1],female[1,0]),这样数据会变得稀疏。稀疏对算法来说是有好处的:当某列的元素都为零时就意味着可以去除这个特征,则学习的难度、计算和存储开销都会降低;即便每个样本中有很多零元素,但是都不不是以整列或整行存在的,这样依旧有好处,比如支持向量机之说以能在文本数据上有很好的性能,就是由于数据有高度的稀疏性,是的大多数问题可以变得线性可分,而且稀疏矩阵有高效的存储方法,节约存储空间。

何时不需要编码

  1. 将离散型特征进行one-hot编码的作用,是为了让距离计算更合理,但如果特征是离散的,并且不用one-hot编码就可以很合理的计算出距离,那么就没必要进行one-hot编码。(如Titanic中的age特征)
  2. 有些基于树的算法在处理变量时,并不是基于向量空间度量,数值只是个类别符号,即没有偏序关系,所以不用进行独热编码。  Tree Model不太需要one-hot编码: 对于决策树来说,one-hot的本质是增加树的深度

编码方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值