keras Metrices中binary_accuracy
的阈值用于预测一个样本为正面和负面情况?是阈值0.5?怎么调整呢?我想设置阈值0.80,如果预测值是0.79,那么它被认为是负样本,否则,如果预测值是0.81,那么它被认为是正样本。
答案 0 :(得分:2)
binary_accuracy
没有阈值参数,但您可以自己轻松定义一个。
import keras
from keras import backend as K
def threshold_binary_accuracy(y_true, y_pred):
threshold = 0.80
if K.backend() == 'tensorflow':
return K.mean(K.equal(y_true, K.tf.cast(K.lesser(y_pred,threshold), y_true.dtype)))
else:
return K.mean(K.equal(y_true, K.lesser(y_pred,threshold)))
a_pred = K.variable([.1, .2, .6, .79, .8, .9])
a_true = K.variable([0., 0., 0., 0., 1., 1.])
print K.eval(keras.metrics.binary_accuracy(a_true, a_pred))
print K.eval(threshold_binary_accuracy(a_true, a_pred))
现在您可以将其用作metrics=[threshold_binary_accuracy]
答案 1 :(得分:1)
要回答最初的问题,keras使用round函数来分配类,因此阈值为0.5。
https://github.com/fchollet/keras/blob/master/keras/metrics.py
def binary_accuracy(y_true,y_pred): 返回K.mean(K.equal(y_true,K.round(y_pred)))
答案 2 :(得分:1)
即使更快,如果您使用tf 2,也可以使用:tf.keras.metrics.BinaryAccuracy(),它具有一个内部threshold
参数,您可以设置