pytorch分类模型绘制混淆矩阵及可视化的方法
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,本文小编为大家详细介绍"pytorch分类模型绘制混淆矩阵及可视化的方法",内容详细,步骤清晰,细节处理妥当,希望这篇"pytorch分类模型绘制混淆矩阵及可视化的方法"文章能帮助大家解决疑惑,下面跟
千家信息网最后更新 2025年11月09日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安全错误
数据库的锁怎样保障安全
招聘软件开发人员的范本
成都网络安全监理工程师
简单网络安全手抄报有电脑的
测试工作好还是软件开发好
光伏电站网络安全装置
数据库中的引号与双引号
要覆盖数据库已存在
物理学专业转软件开发
聚财缘软件开发
服务器的股票
怎么样添加内部服务器
加快数据库访问新技术
腐蚀 数据库
安防管理平台连不上服务器
连接数据库的端口号怎么查
石嘴山系统软件开发售后服务
数据库的故障恢复
管理软件开发的单位
数据库应用管理的好处
网络安全考试题含答案
计算机网络技术实用教程张震
高二计算机网络技术建构图
软件开发抄袭
软件开发和软件测试工作强度
公主链接的服务器
软件开发励志语录
国外服务器怎么备案
香港科大网络安全专业
无线软件开发报价行情
计算机网络技术第二版谢树新