独热编码例子

该文展示了在Python中使用NumPy的reshape函数对数组进行重塑,以及如何利用广播机制进行元素级比较。通过将类标签(self.classes)与输入(x)进行比较,生成布尔数组并转换为独热编码形式,具体为[[1.0,0.0,0.0],[0.0,1.0,0.0],[0.0,0.0,1.0],[1.0,0.0,0.0]]。这个过程在机器学习和数据处理中常见,用于编码类别变量。
# self.classes.reshape([1, -1]) 的结果
[['cat', 'dog', 'bird']]

# x.reshape([-1, 1]) 的结果
[['cat'],
 ['dog'],
 ['bird'],
 ['cat']]

# self.classes.reshape([1, -1]) == x.reshape([-1, 1]) 的结果
[[ True, False, False],
 [False,  True, False],
 [False, False,  True],
 [ True, False, False]]

# (self.classes.reshape([1, -1]) == x.reshape([-1, 1])).astype('float32') 的结果
[[1.0, 0.0, 0.0],
 [0.0, 1.0, 0.0],
 [0.0, 0.0, 1.0],
 [1.0, 0.0, 0.0]]

在上述示例中,输入 x 中的每个元素与 self.classes 中的元素进行比较,生成一个布尔数组。然后,布尔数组被转换为浮点数类型的独热编码,其中匹配的位置为 1.0,不匹配的位置为 0.0。

因此,根据给定的示例,[‘cat’, ‘dog’, ‘bird’, ‘cat’] 将被转换为独热编码形式为 [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0]] 的数组。其中,第一个元素 ‘cat’ 的独热编码是 [1.0, 0.0, 0.0],第二个元素 ‘dog’ 的独热编码是 [0.0, 1.0, 0.0],依此类推。

注意这里还有python的广播用到了
是的,代码中使用了广播操作。

self.classes.reshape([1, -1]) == x.reshape([-1, 1]) 这一行代码中,self.classes.reshape([1, -1])x.reshape([-1, 1]) 的形状不完全匹配,但通过广播机制,它们可以在比较操作中进行自动扩展。

广播是一种 NumPy 的特性,允许在不同形状的数组之间执行元素级的操作,而无需显式循环扩展。在这种

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值