pytorch分类模型绘制混淆矩阵及可视化的方法
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本文小编为大家详细介绍"pytorch分类模型绘制混淆矩阵及可视化的方法",内容详细,步骤清晰,细节处理妥当,希望这篇"pytorch分类模型绘制混淆矩阵及可视化的方法"文章能帮助大家解决疑惑,下面跟
千家信息网最后更新 2025年02月01日pytorch分类模型绘制混淆矩阵及可视化的方法
本文小编为大家详细介绍"pytorch分类模型绘制混淆矩阵及可视化的方法",内容详细,步骤清晰,细节处理妥当,希望这篇"pytorch分类模型绘制混淆矩阵及可视化的方法"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
Step 1. 获取混淆矩阵
#首先定义一个 分类数*分类数 的空混淆矩阵 conf_matrix = torch.zeros(Emotion_kinds, Emotion_kinds) # 使用torch.no_grad()可以显著降低测试用例的GPU占用 with torch.no_grad(): for step, (imgs, targets) in enumerate(test_loader): # imgs: torch.Size([50, 3, 200, 200]) torch.FloatTensor # targets: torch.Size([50, 1]), torch.LongTensor 多了一维,所以我们要把其去掉 targets = targets.squeeze() # [50,1] -----> [50] # 将变量转为gpu targets = targets.cuda() imgs = imgs.cuda() # print(step,imgs.shape,imgs.type(),targets.shape,targets.type()) out = model(imgs) #记录混淆矩阵参数 conf_matrix = confusion_matrix(out, targets, conf_matrix) conf_matrix=conf_matrix.cpu()
混淆矩阵的求取用到了confusion_matrix函数,其定义如下:
def confusion_matrix(preds, labels, conf_matrix): preds = torch.argmax(preds, 1) for p, t in zip(preds, labels): conf_matrix[p, t] += 1 return conf_matrix
在当我们的程序执行结束 test_loader 后,我们可以得到本次数据的 混淆矩阵,接下来就要计算其 识别正确的个数以及混淆矩阵可视化:
conf_matrix=np.array(conf_matrix.cpu())# 将混淆矩阵从gpu转到cpu再转到npcorrects=conf_matrix.diagonal(offset=0)#抽取对角线的每种分类的识别正确个数per_kinds=conf_matrix.sum(axis=1)#抽取每个分类数据总的测试条数 print("混淆矩阵总元素个数:{0},测试集总个数:{1}".format(int(np.sum(conf_matrix)),test_num)) print(conf_matrix) # 获取每种Emotion的识别准确率 print("每种情感总个数:",per_kinds) print("每种情感预测正确的个数:",corrects) print("每种情感的识别准确率为:{0}".format([rate*100 for rate in corrects/per_kinds]))
执行此步的输出结果如下所示:
Step 2. 混淆矩阵可视化
对上边求得的混淆矩阵可视化
# 绘制混淆矩阵Emotion=8#这个数值是具体的分类数,大家可以自行修改labels = ['neutral', 'calm', 'happy', 'sad', 'angry', 'fearful', 'disgust', 'surprised']#每种类别的标签# 显示数据plt.imshow(conf_matrix, cmap=plt.cm.Blues)# 在图中标注数量/概率信息thresh = conf_matrix.max() / 2 #数值颜色阈值,如果数值超过这个,就颜色加深。for x in range(Emotion_kinds): for y in range(Emotion_kinds): # 注意这里的matrix[y, x]不是matrix[x, y] info = int(conf_matrix[y, x]) plt.text(x, y, info, verticalalignment='center', horizontalalignment='center', color="white" if info > thresh else "black") plt.tight_layout()#保证图不重叠plt.yticks(range(Emotion_kinds), labels)plt.xticks(range(Emotion_kinds), labels,rotation=45)#X轴字体倾斜45°plt.show()plt.close()
好了,以下就是最终的可视化的混淆矩阵啦:
其它分类指标的获取
例如 F1分数、TP、TN、FP、FN、精确率、召回率 等指标, 待补充哈(因为暂时还没用到)~
读到这里,这篇"pytorch分类模型绘制混淆矩阵及可视化的方法"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
矩阵
分类
可视化
个数
方法
模型
情感
数值
数据
文章
测试
内容
准确率
指标
颜色
抽取
妥当
显著
精确
接下来
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发公司现金流测算
了解网络安全知识的好处
网络安全教育方面100个字
金橘网络技术工作室
刺激战场连接服务器时间
网络安全与网络新基础
福州互联网科技公司骗
图拉丁吧服务器
湖北应用软件开发多少钱
小白能学软件开发吗
2017网络安全日报名
写一篇网络安全的小短文
校园网络安全预防与维护
erp服务器管理系统硬件
灵钰网络技术有限公司洛阳
网络安全教育倡议书400字
计算机网络技术毕业的求职信
集群服务器网线怎么插
网络安全主题班会ppt
美国安全服务器地址
福田sport内部服务器错误
网络技术三级选择题考点
网络安全宣传周来宾
学好软件开发技巧
网络安全生态内容
c语言网络安全编程实现
中国台湾文档软件开发推荐
台前天气预报软件开发
单机天龙清理数据库
kards连不上服务器怎么办