如何将多类分类后得到的结果映射到1和0

时间:2018-04-07 06:21:46

标签: validation numpy machine-learning multilabel-classification

我正在研究cifar数据集的图像分类。我获得了预测标签,因为输出映射从0到10个不同的类有没有办法找到预测标签所属的类?

//sample output obtained
array([3.3655483e-04, 9.4402254e-01, 1.1646092e-03, 2.8560971e-04,
       1.4086446e-04, 7.1564602e-05, 2.4985364e-03, 6.5030693e-04,
       3.4783698e-05, 5.0794542e-02], dtype=float32)

一种方法是找到最大值并将该索引设为1并保持为0.

 //for above case it should look like this
 array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0])

任何人都可以告诉我如何做到这一点,否则如果您有任何更好的方法,请建议。感谢

1 个答案:

答案 0 :(得分:1)

就像

一样简单
>>> data = np.array([3.3655483e-04, 9.4402254e-01, 1.1646092e-03, 2.8560971e-04,
...        1.4086446e-04, 7.1564602e-05, 2.4985364e-03, 6.5030693e-04,
...        3.4783698e-05, 5.0794542e-02], dtype=np.float32)
>>> 
>>> (data == data.max()).view(np.int8)
array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int8)

说明:data.max()找到最大值。我们将它与每个单独的元素进行比较,以获得真值的向量。然后我们利用True映射到1False映射到0的事实转换为整数。

请注意,如果最大值不唯一,则会返回多个。