NN 模型输出一个类别进行二元分类
Posted
技术标签:
【中文标题】NN 模型输出一个类别进行二元分类【英文标题】:NN model ouputs one category for binary classification 【发布时间】:2020-03-12 17:57:29 【问题描述】:我的数据集包含标签为 0 和 1,其中包含 100 个示例,每个示例的特征维度为 39。有 50 个示例属于 1 类,其余 50 个属于 0 类。图形输出仅显示一个输出而不是两个。因为有两个类别,所以应该有两个输出节点。我很惊讶为什么会这样。以下是代码。非常感谢您的帮助。
hiddenlayersize = 5;
net = patternnet(hiddenlayersize);
net = init(net);
netperformFcn = 'crossentropy';
[net] = train(net,x,t);
out = sim(net,x);
下面是模型:
另外,out
不是二进制的。如何获得二进制的预测标签?
【问题讨论】:
【参考方案1】:分类以概率的形式输出结果——你的结果很好。 默认阈值为 0.5,用于将概率转换为 2 个类别,例如 0 和 1。 您可以微调阈值 - 通过上下移动并进一步分析结果,如误报、误报、精确召回曲线等,具体取决于目标是什么。
希望这会有所帮助。
【讨论】:
感谢您的回答,但不清楚为什么图片中只有一个输出节点而不是 2 个用于二进制分类。图片是错误的,所以模型,我猜。您能否回答我哪里出错以及如何将输出概率更改为 0/1 类标签。 图和模型都正确。取文件中的输出概率,比如 excel 并将 > 0.5 标记为 "1" ,其余为 0。这是将概率转换为二进制值的默认阈值。然后通过改变不同的阈值水平来分析误差。例如 - 在 0.5 阈值之后 - 您可以尝试 0.4 并查看损失是减少还是增加。 您能否解释一下为什么说应该有 1 个输出节点而不是 2 个输出节点,因为有两个类标签,但它不是 1 就是 0。 因为 NN 输出的是分类问题的概率,而不是离散值(这里是 0 和 1),所以它是工作和决策 - 我们如何使用阈值标准将这些概率映射到 0 和 1 . 非常感谢!如果您能查看我在这里提出的关于使用 MLP 的类不平衡问题的另一个问题,我将不胜感激 ***.com/questions/58894816/…以上是关于NN 模型输出一个类别进行二元分类的主要内容,如果未能解决你的问题,请参考以下文章
感知机算法(Perceptron Learning Algorithm)
组合两个预训练模型的输出(在不同数据集上训练)并使用某种形式的二元分类器来预测图像