使用 numpy 从图像标签进行的一种热编码
One hot encoding from image labels using numpy
我一直在纠结这个热门的编码问题。我确信这是一个简单的过程,但我已经研究这个问题一段时间了,看不出我的错误。
我有一组train_labels的形状(1080,1),共有6个整数类。我正在尝试使用以下方法将其变成一个热门向量:
def convert_to_one_hot(train_labels_conv,classes):
Y_train = np.eye(classes)[train_labels_conv.reshape(-1)].T
return Y_train
Y_train = np.arange(6)
print(Y_train)
Y_train_hot = convert_to_one_hot(Y_train, len(Y))
print(Y_train_hot)
As a result I simply get
[0 1 2 3 4 5]
[[1. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0.]
[0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 1.]]
我的训练标签不应该收到完整的热矩阵吗?我将不胜感激任何正确方向的指导,因为我还不太习惯使用 python。
如果你的标签是字符串,你可以使用这个函数:
import numpy as np
target = np.array(['dog', 'dog', 'cat', 'cat', 'cat', 'dog', 'dog',
'cat', 'cat', 'hamster', 'hamster'])
def one_hot(array):
unique, inverse = np.unique(array, return_inverse=True)
onehot = np.eye(unique.shape[0])[inverse]
return onehot
print(one_hot(target))
Out[9]:
[[0., 1., 0.],
[0., 1., 0.],
[1., 0., 0.],
[1., 0., 0.],
[1., 0., 0.],
[0., 1., 0.],
[0., 1., 0.],
[1., 0., 0.],
[1., 0., 0.],
[0., 0., 1.],
[0., 0., 1.]])
我一直在纠结这个热门的编码问题。我确信这是一个简单的过程,但我已经研究这个问题一段时间了,看不出我的错误。
我有一组train_labels的形状(1080,1),共有6个整数类。我正在尝试使用以下方法将其变成一个热门向量:
def convert_to_one_hot(train_labels_conv,classes):
Y_train = np.eye(classes)[train_labels_conv.reshape(-1)].T
return Y_train
Y_train = np.arange(6)
print(Y_train)
Y_train_hot = convert_to_one_hot(Y_train, len(Y))
print(Y_train_hot)
As a result I simply get
[0 1 2 3 4 5]
[[1. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0.]
[0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 1.]]
我的训练标签不应该收到完整的热矩阵吗?我将不胜感激任何正确方向的指导,因为我还不太习惯使用 python。
如果你的标签是字符串,你可以使用这个函数:
import numpy as np
target = np.array(['dog', 'dog', 'cat', 'cat', 'cat', 'dog', 'dog',
'cat', 'cat', 'hamster', 'hamster'])
def one_hot(array):
unique, inverse = np.unique(array, return_inverse=True)
onehot = np.eye(unique.shape[0])[inverse]
return onehot
print(one_hot(target))
Out[9]:
[[0., 1., 0.],
[0., 1., 0.],
[1., 0., 0.],
[1., 0., 0.],
[1., 0., 0.],
[0., 1., 0.],
[0., 1., 0.],
[1., 0., 0.],
[1., 0., 0.],
[0., 0., 1.],
[0., 0., 1.]])