one-hot编码和哑变量(dummy)编码

1.One-Hot编码和哑变量(Dummy Variable)编码

one-hot编码和哑变量编码得到的结果很相似。举个栗子:

 feature1One-Hot resultDummy result
sample110,0,10,1
sample220,1,01,0
sample331,0,00,0
sample410,0,10,1

这两种编码的区别和联系

  • One-Hot编码和哑变量编码都只能对离散型变量进行编码。
  • One-Hot编码之后生成的新特征数等于对应特征的不同种类取值个数,feature1中共有3种不同的取值,One-Hot编码之后生成的新特征数就是3。而哑变量编码之后生成的新特征数比对应特征的取值个数少1个。
  • One-Hot编码之所以叫One-Hot编码,是因为每个取值对应的编码中有且只有一个是1,其余都是0。而哑变量编码允许不出现1。
  • One-Hot编码形成的新特征都是二值型特征,比如,上述One-Hot编码形成的三个新维度的意义为:feature1是否为3,feature1是否为2,feature1是否为1;哑变量编码在这一点上与One-Hot类似,只不过当编码全为0是表示 feature1既不是1也不是2,这种情况下默认feature1为3。

2.Python代码实现

因为sklearn及pandas等第三方包中已经加入了这些方法,所以这里直接使用第三方包实现。

from sklearn.preprocessing import OneHotEncoder
import pandas as pd
df = pd.DataFrame([  
            ['green' , 'A'],   
            ['red'   , 'B'],   
            ['blue'  , 'A']])  
df.columns = ['color',  'class'] 
#one-hot编码
onehot=OneHotEncoder(sparse=False)
data=onehot.fit_transform(df[['color']])
print("one-hot编码结果如下:")
print(data)
#哑变量编码
#pd.get_dummies()方法即可以用于产生One-Hot编码,也可以用于产生哑变量编码
#当drop_first=True时为哑变量编码,当为False时为One-Hot编码
#哑变量编码是将One-Hot编码的第一列结果去掉即可。
data=pd.get_dummies(df['color'],drop_first=True)
print("哑变量编码结果如下:")
print(data)

代码运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值