预测概率是否大于某一值



我使用MLP模型进行分类。

当我对新数据进行预测时,我想只保留那些预测概率大于0.5的预测,并将所有其他预测更改为0类。

如何在keras中实现?

我使用using最后一层如下所示model.add(layers.Dense(7 , activation='softmax'))

使用softmax获得概率大于0.5的预测是否有意义?

newdata = (nsamples, nfeatures)
predictions = model.predict (newdata)
print (predictions.shape)
(500, 7)

你可以这样做:

preds=model.predict etc
index=np.argmax(preds)
probability= preds(index)
if probability >=.75:
print (' class is ', index,' with high confidence')
elif probability >=.5:
print (' class is ', index,' with medium confidence')
else:
print (' class is ', index,' with low confidence')

Softmax函数输出概率。在你的例子中,你有7个类别,它们的概率和等于1。

现在考虑[0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.3],它是softmax的输出。如您所见,在这种情况下应用阈值是没有意义的。

阈值0.5与n类预测无关。对于二进制分类来说,这是一个特殊的东西。

要获取类,应该使用argmax.

编辑:如果你想放弃你的预测,如果他们低于一定的阈值,你可以使用,但这是不是一个正确的方式来处理使用多类预测:
labels = []
threshold = 0.5
for probs_thresholded in out:
labels.append([])

for i in range(len(probs_thresholded)):
if probs_thresholded[i] >= threshold:
labels[-1].append(1)
else:
labels[-1].append(0)

相关内容

最新更新