通常,当您想在机器学习中使用单编码进行分类时,就会有一组索引。
import numpy as npnb_classes = 6targets = np.array([[2, 3, 4, 0]]).reshape(-1)one_hot_targets = np.eye(nb_classes)[targets]
在
one_hot_targets现在
array([[[ 0., 0., 1., 0., 0., 0.], [ 0., 0., 0., 1., 0., 0.], [ 0., 0., 0., 0., 1., 0.], [ 1., 0., 0., 0., 0., 0.]]])
使用
.reshape(-1)可以确保您使用正确的标签格式(也可能使用
[[2], [3], [4],[0]])。该
-1值是一个特殊值,表示“将所有剩余的物料放入此维”。因为只有一个,所以它使阵列变平。
复制粘贴解决方案
def get_one_hot(targets, nb_classes): res = np.eye(nb_classes)[np.array(targets).reshape(-1)] return res.reshape(list(targets.shape)+[nb_classes])
包
您可以使用mpu.ml.indices2one_hot。经过测试且易于使用:
import mpu.mlone_hot = mpu.ml.indices2one_hot([1, 3, 0], nb_classes=5)



