【问题标题】:how to map the results obtained after multiclass classification to 1 and 0如何将多类分类后得到的结果映射到1和0
【发布时间】:2018-09-17 04:11:51
【问题描述】:

我正在为 cifar 数据集进行图像分类。我获得了预测标签作为从 0-1 映射到 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])

谁能告诉我如何做到这一点,或者如果你有更好的方法请提出建议。谢谢

【问题讨论】:

    标签: validation numpy machine-learning multilabel-classification


    【解决方案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 的事实将其转换为整数。

    请注意,如果最大值不是唯一的,这将返回多个。

    【讨论】:

    • 我们不知道每次预测值都是唯一的,即使得到相同数字的概率较小。如果它们不是唯一的,您可以建议其他技术。顺便谢谢你的回答
    • @amareshhiremani 好吧,如果最大值不是唯一的,这意味着您的分类器在达到最大值的类之间没有偏好。由你决定做什么。对于某些后续分析,抛硬币可能是可以接受的,但对于某些后续分析可能不可接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    相关资源
    最近更新 更多