我刚用Python写了一个MLP。经过训练后,我传入一些测试数据以查看结果,并在输出处得到一个十进制数数组,而不是期望的二进制输出。
例如,我将获得[0.43, 0.56, 0.1, 0.8],而不是[0, 1, 0,1]。
我怎样才能做到这一点呢?
谢谢
利亚姆
发布于 2020-05-25 00:51:32
这看起来像一个模型的例子,输出在类别1中的概率,然后由你来决定截止点。
您给出了一个(0.43, 0.56, 0.1, 0.8)输出的示例。如果您的截止值是0.5,那么您将得到(0, 1, 0, 1)的分类。如果您在0.2设置了截止点(这是允许的),那么您将得到(1,1,1,0)的分类。在您使用的任何软件中都应该有这样的方法。如果所有这些都失败了,您可以循环遍历概率值的向量,并生成一个新的向量,其中包含一些关于该值是否超过阈值和值是否超过阈值的条件语句。我会给出一些伪码。
for value...
if value>threshold
new value =1
else
new value =0这导致了ROC曲线和曲线下的面积,在这里,模型在所有断口上都有其精度评估。也许更好的方法是使用严格正确的得分规则。您可以在交叉验证堆栈( stats.stackexchange.com )上阅读更多有关此问题的信息。请留意弗兰克·哈雷尔()关于这一主题的帖子。无耻地,我将提到我的一个帖子,在那里我有点挑战这个想法:https://stats.stackexchange.com/questions/464636/proper-scoring-rule-when-there-is-a-decision-to-make-e-g-spam-vs-ham-email。
松散地说,严格正确的评分规则会惩罚模型对其预测缺乏信心。输出在0.56第一类中的概率并不像0.99那样好。把第一个想象成“当然,我猜是第一类”,而第二个是“哦,是的,它是第一类!”
https://datascience.stackexchange.com/questions/45598
复制相似问题