你好,我想问一下我现在使用flow_from_directory读取数据,怎么计算f1值呢
1条回答 默认 最新
- CSDN专家-AI菌 2021-08-31 23:29关注
F1 score为精确率与召回率的调和均值,是用来衡量二分类模型精确度的一种指标。
F1=2*(Precision*Recall)/(Precision+Recall)具体代码可以参考下面:
import cv2 import numpy as np import os from time import time start = time() predict_path = r"E:\allsample_chenjun\predict\thin" label_path = r"E:\allsample_chenjun\testline" files = os.listdir(label_path) list1 = [] for file in files: result_name = os.path.join(label_path,file) list1.append(result_name) files = os.listdir(predict_path) list2 = [] print("lable_len:",len(files)) for file in files: result_name = os.path.join(predict_path,file) list2.append(result_name) print("predict_len:",len(files)) Recall = 0 Precision = 0 F1 = 0 for i in range(len(files)): TP = 0 FP = 0 FN = 0 TN = 0 img_lable = cv2.imread(list1[i],0) img_predict = cv2.imread(list2[i],0) x = np.array(img_lable) for j in range(x.shape[0]): index = np.arange(0, x.shape[1]) a = index[img_lable[j]==img_predict[j]] for k in range(len(a)): if img_lable[j][a[k]] == 255: TP += 1 else : TN += 1 b = index[img_lable[j] != img_predict[j]] for k in range(len(b)): if img_lable[j][b[k]] == 255: FN += 1 else : FP += 1 Precision += TP/(TP+FP) Recall += TP/(TP+FN) F1 += (2 * (TP/(TP+FP)) * (TP/(TP+FN))/((TP/(TP+FP)) + (TP/(TP+FN)))) print("第",i+1,"次计算完成") end = time() print('running time is :%f'%(end-start)) print("Precision:" ,Precision/len(files),"Recall:",Recall/len(files),"F1:",F1/len(files))
解决 无用评论 打赏 举报
悬赏问题
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度
- ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么