本文参考这篇大佬博客: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)