pytorch分类模型绘制混淆矩阵及可视化的方法
发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,本文小编为大家详细介绍"pytorch分类模型绘制混淆矩阵及可视化的方法",内容详细,步骤清晰,细节处理妥当,希望这篇"pytorch分类模型绘制混淆矩阵及可视化的方法"文章能帮助大家解决疑惑,下面跟
千家信息网最后更新 2025年02月16日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安全错误
数据库的锁怎样保障安全
猪八戒网络技术有限公司
网络安全知识进展
影响软件开发成本因素有哪些
拍照打印软件开发
天津大学网络安全教授
服务器一进去就是130g怎么办
数据库安全4a
数据库中的数据是存在内存里的吗
山西通信软件开发价格检测中心
怎么把文件服务器映射到公网
数据库反映很慢
服务器必须用2008系统吗
gbase8t数据库连接
广州佳络互联网科技
解读网络安全核查办法
现在做网络安全的公司
有专门培训软件开发的地方
关于申请软件开发
图书网络安全
服务器工程师月薪
ipv6确保中国网络安全吗
mysql数据库地址怎么查询
校园网络安全专项检查表
linux做vpn服务器
计算机网络技术职业目标与选择
web服务器怎么添加dns记录
网络安全法明示的制度内容
信创服务器有哪些产品
连接远程数据库卡顿
正在从服务器考数据库