手动实现One-hot编码

本文参考这篇大佬博客:https://blog.csdn.net/gdh756462786/article/details/79161525?
假如我们要实现三分类,那咱们的标签可能就是

#标签列表
lable = [0,1,2,2,1,0]
#种类:3分类
num_class = 3

好的,接下来就是转onehot编码了

# 建立一个空列表,用来存放Onehot标签
onehot = []
for value in label:
	# 创建长度为3,值全为为0的列表
	letter = [0 for _ in range(num_class)]
	# 以value的值作为列表位置索引,将值设为1
	letter[value] = 1
	onehot.append(letter)
print(onehot)

OK,这样咱们的onehot编码即可实现,那么经过神经网络之后得到onehot标签之后,如何转换真实标签label

import numpy as np
#z或者from numpy import argmax
#比如神经网络输出一个label_1
label_1 = [0.1, 0.8, 0.1]
# 那么真实标签即为
real_label = np.argmax(label_1)

可以再来一波字符滴,整体思路:1、创建一个空字典,用来存储类别数和标签;2、

data = ['cold', 'cold', 'warm', 'cold', 'hot', 'hot', 'warm', 'cold', 'warm', 'hot']

data_num = {}
cls=0
for i in range(len(data)):
    if data[i] not in data_num.keys():
        data_num[data[i]]=cls
        cls+=1
        
# 获得类别数
class_num=len(data_num)

# 创建一个空的onehot列表
onehot_encoded = []
for i in range(len(data)):
    label=[0 for _ in range(class_num)]
    label[data_num[data[i]]]=1
    onehot_encoded.append(label)
print(onehot_encoded)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吹口哨的夜莺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值