独热编码-小白理解

01 举例引入

假设我们有一群学生,他们可以通过四个特征来形容,分别是:

  • 性别:[“男”,“女”]
  • 年级:[“初一”,“初二”,“初三”]
  • 学校:[“一中”,“二中”,“三中”,“四中”]

举个例子,用上述四个特征来描述小明同学,即“男生,初一,来自二中”,用独热编码的形式来表示,我们用采用N位状态寄存器来对N个状态进行编码,拿上面的例子来说,就是:

性别

[“男”,“女”]

N=2

男:1 0 女:0 1

年级

[“初一”,“初二”,“初三”]

N=3

初一:1 0 0 初二:0 1 0 初三:0 0 1

学校

[“一中”,“二中”,“三中”,“四中”]

N=4

一中:1 0 0 0 二中:0 1 0 0 三中:0 0 1 0 四中:0 0 0 1

   因此,当我们再来描述小明的时候,就可以采用  [ 1 0 1 0 0 0 1 0 0 ] 。

02  数字表示

(1)给出数字数据集如下:

003
110
021
102

这里一共有四个数据,三种特征。是哪四个呢,我们列出矩阵

第一种

第二种

第三种

第一个

0

0

3

第二个

1

1

0

第三个

0

2

1

第四个

1

0

2

  那么,对于(0,1,3)这个特征向量如何进行独热编码呢?

我们竖着看数据集,可以看出第一种特征中只有0、1两类,第二组有0、1、2三类,第三种有0、1、2、3四类,因此分别可以用2、3、4个状态类来表示。

在(0,1,3)中,

第一个数为0,对应第一种特征则为 1 0;

第二个数为1,对应第二种特征则为 0 1 0;

第三个数为3,对应第三种特征则为 0 0 0 1。

注意:这里的3编码为 0 0 0 1,而非 1 0 0 0。

 使用python编程验证 :

# 创建一个 OneHotEncoder 对象
encoder1 = preprocessing.OneHotEncoder()
# 拟合并进行编码
encoder1.fit([[0,0,3], [1,1,0], [0,2,1], [1,0,2]]) 
# 对指定数据进行编码
encoded_vector1 = encoder1.transform([[0,1,3]]).toarray() 
# 打印编码后的向量
print ("\nEncoded vector1 =", encoded_vector1)

输出结果:

Encoded vector1 = [[1. 0. 0. 1. 0. 0. 0. 0. 1.]]

即:

(0,1,3)013
独热编码100100001

(2)再给出一组数据集:

02112
1353
23212
1243

我们进行(2,3,5,3)的独热编码。

使用python编程如下:

# 创建一个 OneHotEncoder 对象
encoder = preprocessing.OneHotEncoder()
# 拟合并进行编码
encoder.fit([[0, 2, 1, 12], [1, 3, 5, 3], [2, 3, 2, 12], [1, 2, 4, 3]]) 
# 对指定数据进行编码
encoded_vector = encoder.transform([[2, 3, 5, 3]]).toarray() 
# 打印编码后的向量
print ("\nEncoded vector =", encoded_vector)

运行后结果如下:

Encoded vector = [[0. 0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]]

即:

(2,3,5,3)2353
独热编码00101000110

这个结果又是如何得出的呢?

可以简单理解为对每组纵向数据先进行了排序,

如第三种中,本来的(1,5,2,4),换成(1,2,4,5),

所以,1对应1000,2对应0100,4对应0010,5对应0001。

同理,在第四种里,3对应10,12对应01。

至此,应该可以理解如何进行独热编码了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

@Duang~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值