如何在python神经网络中执行具有多个类的单类分类?



我对python和神经网络非常陌生,在阅读了几个教程后,我正在尝试从头开始创建我的NN。

我的数据是这样的:

0.086, 0.4343, 0.42, 类1

0.186, 0.4343, 0.55, 类2

0.286, 0.4343, 0.42, 类2

0.586, 0.4343, 0.42, 类3

我想从头开始在 python 中创建一个神经网络来预测输出类。

阅读本教程后,我有一些想法。但是,在本教程中,输出是一个二进制类。所以假设预测结果是:

输入:0.7 0.3 0.5

预测: 0.23

输出等级:0 和 1

这是否意味着 NN 认为输出有 77% 的可能性为 0

如果是这种情况,那么当输出类为 -1、0 和 1 并且 NN的预测是0.23?如何获得属于每个类的预测的可能性?如果可能的话,有人可以指出我一些关于多个类的 python 教程吗?

对于非二元分类,通常可以选择以下两种方法之一 - softmax方法(通常更流行(或一对多方法。

在 softmax 方法中,神经网络应该有 3 个输出节点,而不是 1 个。您将 softmax 函数应用于这 3 个输出节点,这应该为您提供进入每个类的概率。在此方法中,跨 3 个输出节点的概率输出总和将加起来为 1。

在一对一方法中,您将再次训练 3 个输出节点,但每个输出节点都是一个二元分类器,询问此对象是否在该类中。 即每个输出节点都会问二进制问题"这是类 1 还是不是","这是类 2 还是不是"。然后选择输出最高概率的节点。在此方法中,输出节点概率加起来不一定为 1。

是的,没错,根据您的算法,它有 77% 的可能性属于 class-0。

来回答您对3个不同类别的案件的问题。

实际上,您询问的情况是当有2个以上的类时出现的多类分类之一。对于这种情况,神经网络被训练来计算某个数据样本属于某个类的概率。

在您的情况下,对于 3 个类,输出层将有 3 个神经元,每个节点上的每个值都会为您提供数据样本属于该类的概率。

现在,我们使用softmax从最后一层的激活中获得这些概率。

最新更新