Я перешел по этой ссылке Как рассчитать макрос F1 в Керасе? , чтобы вычислить балл F1 моих двоичных данных.
И я также написал свой собственный код для вычисления балла F1 после оценкии прогноз завершен. Мой собственный код: :
model = VGG.build(80, 80, 6)
model.load_weights('/home/matlabclient01/Documents/Warfana/Final/models_6/m13.h5')
model.compile(loss="binary_crossentropy", optimizer=opt, metrics=[f1])
predY = model.predict(data, batch_size=1000, verbose=1)
y_classes = predY.argmax(axis=-1) #y_classes contain predictions
#data1 contain actual labels
temp = data1
temp = np.array(temp)
results = y_classes == temp
TP = TN = FP = FN = 0
if len(y_classes) == len(temp):
for i in range(len(y_classes)):
if y_classes[i] == temp[i] and temp[i] == 1:
TP=TP+1
elif y_classes[i] == temp[i] and temp[i] == 0:
TN=TN+1
elif y_classes[i] != temp[i] and temp[i] == 1:
FN=FN+1
elif y_classes[i] != temp[i] and temp[i] == 0:
FP=FP+1
print("TP = ",TP)
print("FP = ",FP)
print("TN = ",TN)
print("FN = ",FN)
precision = TP/(len(y_classes[y_classes==1]))
recall = TP/(len(temp[temp==1]))
fmeasure = (2*precision*recall)/(precision+recall)
print("FMeasure = ",fmeasure)
Это разные результаты. Пользовательская формула Keras и результаты моего собственного кода
Результаты:
1-я F-мера = 0,822 (Результаты из KerasПользовательская формула)
Last Fmeasure = 0,31 (Результаты из моего собственного кода)