Tensorflow 预测概率是否高于某个值
我使用MLP模型进行分类 当我预测新数据时,我只想保留那些预测概率大于0.5的预测,并将所有其他预测更改为0类 在凯拉斯我怎么做 我使用的最后一层如下Tensorflow 预测概率是否高于某个值,tensorflow,keras,deep-learning,neural-network,Tensorflow,Keras,Deep Learning,Neural Network,我使用MLP模型进行分类 当我预测新数据时,我只想保留那些预测概率大于0.5的预测,并将所有其他预测更改为0类 在凯拉斯我怎么做 我使用的最后一层如下 model.add(layers.Dense(7,activation='softmax')) 使用softmax获得概率大于0.5的预测是否有意义 newdata = (nsamples, nfeatures) predictions = model.predict (newdata) print (predictions.shape) (50
model.add(layers.Dense(7,activation='softmax'))
使用softmax获得概率大于0.5的预测是否有意义
newdata = (nsamples, nfeatures)
predictions = model.predict (newdata)
print (predictions.shape)
(500, 7)
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)
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)
您可以执行以下操作:
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')
您可以执行以下操作:
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')
这意味着,由于最大概率是0.3,预测将是class
7
right?准确地说。使用argmax返回最大值的索引。然后,我们可以说label7
的预测概率为0.3。由于它小于0.5
,我们将其转换为0
?将其转换为0没有任何意义。如果将其转换为0,则会丢失预测。正如我所说的,使用softmax进行n类预测时,获取类和预测不需要任何阈值。因为这可能会导致错误信息,我避免显示它,您可以简单地用列表理解来屏蔽预测数组。这意味着,由于最大概率为0.3,预测将是class7
对吗?没错。使用argmax返回最大值的索引。然后,我们可以说label7
的预测概率为0.3。由于它小于0.5
,我们将其转换为0
?将其转换为0没有任何意义。如果将其转换为0,则会丢失预测。正如我所说的,使用softmax进行n类预测时,获取类和预测不需要任何阈值。因为这可能会导致错误信息,我避免显示它,您可以简单地用列表理解来屏蔽预测数组。