Keras实现计算测试集Accuracy,loss,Precision,Recall与F1
由于Precision,Recall与F1是模型对整体数据的的评估标准,所以,首先需要计算model对于整个测试集的Prediction,而不是一个batch上的,再对其求三个Metrics
计算测试集的prediction
- 记得先reshape数据;
def mktest(lines=None, size=(224, 224)):
if lines == None:
with open('../../../Metrics/cate.txt', 'r') as l:
lines = l.readlines()
l.close()
img_dir = '../../../Metrics/imgs/'
imgs = []
gt = []
for line in lines:
imgs.append(img_dir + line.split(';')[0])
gt.append(int(line.split(';')[1]))
X_test = []
Y_test = gt
for il in imgs:
img = cv2.imread(il)
try:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
except:
pass
img = np.float32(img / 255)
X_test.append(img)
X_test = utils.resize_image(X_test, (224, 224))
X_test = X_test.reshape(-1, 224, 224, 3)
Y_test = np_utils.to_categorical(np.array(Y_test), num_classes=6)
return X_test, Y_test
- 使用model.predict()计算预测值
def get_pre(Y_test, X_test):
Y_pre = model.predict(X_test)
np.savez('./data.npz', X_test, Y_test, Y_pre)
return Y_pre
懒得一直计算的可以直接储存数据。
自定义计算Metrics
class myMetrics:
def __init__(self, X_test, Y_test, model):
self.model = model
self.Y_test = Y_test
self.X_test = X_test
self.y_pred