数据预处理--One-hot编码

原理

当我们遇到的变量是标称型变量时,也就是无法比较大小、没有序列性的数据时候,就需要独热编码,独热编码通过将数据进行编码,例如装修类型,分为精装、简装、毛坯三种类型,无法比较大小,只能通过独热编码来表示

实现

这里介绍的one-hot编码是使用scikit-learn.preprocessing的OneHotEncoder方法实现
代码如下

from sklearn import preprocessing
encoder = preprocessing.OneHotEncoder()
encoder.fit([[0,2,1,12],[1,3,5,3],[2,3,2,12],[1,2,4,3]])
hh = encoder.transform([[2,3,5,3]]).toarray()

# 输出的结果
array([[0., 0., 1., 0., 1., 0., 0., 0., 1., 1., 0.]])

具体的编码步骤是这样的

  • 第一个要编码的是2,它是第一个特征,将每个特征的第一个特征拿出来非重复计数并排序,得到的分别是[0,1,2],而2是在第三位,所以第一个特征2的编码是[0,0,1]
  • 第二个是3,排序后是[2,3],所以3的编码是[0,1]
  • 第三个是5,排序后是[1,2,4,5],所以5的编码是[0,0,0,1]
  • 第四个是3,排序后是[3,12],所以3编码是[1,0]

这里是将特征变量的每一个特征和每个特征的对应位置进行编码,所以这里出现第二个3和第四个3是不一样的编码

与pandas.get_dummies()的区别

独热编码使用pandas.get_dummies()也可以完成,两者的区别是scikit-learn不支持编码字符串,所以像装修类型这种字符串变量得使用pandas来完成
在这里插入图片描述
如图所示,pandas.get_dummies()可以将字符串变量转化为数值型变量

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2020重新做人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值