pytorch 计算混淆矩阵

56 篇文章 3 订阅
订阅专栏

混淆矩阵是评估模型结果的一种指标 用来判断分类模型的好坏

 预测对了 为对角线 

还可以通过矩阵的上下角发现哪些容易出错

从这个 矩阵出发 可以得到 acc != precision recall  特异度?

 

 目标检测01笔记AP mAP recall precision是什么 查全率是什么 查准率是什么 什么是准确率 什么是召回率_:)�东东要拼命的博客-CSDN博客

 acc  是对所有类别来说的

其他三个都是 对于类别来说的

下面给出源码 

import json
import os

import matplotlib.pyplot as plt
import numpy as np
import torch
from prettytable import PrettyTable
from torchvision import datasets
from torchvision.models import MobileNetV2
from torchvision.transforms import transforms


class ConfusionMatrix(object):
    """
    注意版本问题,使用numpy来进行数值计算的
    """

    def __init__(self, num_classes: int, labels: list):
            self.matrix = np.zeros((num_classes, num_classes))
            self.num_classes = num_classes
            self.labels = labels

    def update(self, preds, labels):
        for p, t in zip(preds, labels):
            self.matrix[t, p] += 1

# 行代表预测标签 列表示真实标签




    def summary(self):
        # calculate accuracy
        sum_TP = 0
        for i in range(self.num_classes):
            sum_TP += self.matrix[i, i]
        acc = sum_TP / np.sum(self.matrix)
        print("acc is", acc)

        # precision, recall, specificity
        table = PrettyTable()
        table.fields_names = ["", "pre", "recall", "spec"]
        for i in range(self.num_classes):
            TP = self.matrix[i, i]
            FP = np.sum(self.matrix[i, :]) - TP
            FN = np.sum(self.matrix[:, i]) - TP
            TN = np.sum(self.matrix) - TP - FP - FN
            pre = round(TP / (TP + FP), 3)    # round 保留三位小数
            recall = round(TP / (TP + FN), 3)
            spec = round(TN / (FP + FN), 3)
            table.add_row([self.labels[i], pre, recall, spec])
        print(table)


    def plot(self):
        matrix = self.matrix
        print(matrix)
        plt.imshow(matrix, cmap=plt.cm.Blues)  # 颜色变化从白色到蓝色

        # 设置 x  轴坐标 label
        plt.xticks(range(self.num_classes), self.labels, rotation=45)
        # 将原来的 x 轴的数字替换成我们想要的信息 self.num_classes  x 轴旋转45度
        # 设置 y  轴坐标 label
        plt.yticks(range(self.num_classes), self.labels)

        # 显示 color bar  可以通过颜色的密度看出数值的分布
        plt.colorbar()
        plt.xlabel("true_label")
        plt.ylabel("Predicted_label")
        plt.title("ConfusionMatrix")

        # 在图中标注数量 概率信息
        thresh = matrix.max() / 2
        # 设定阈值来设定数值文本的颜色 开始遍历图像的时候一般是图像的左上角
        for x in range(self.num_classes):
            for y in range(self.num_classes):
                # 这里矩阵的行列交换,因为遍历的方向 第y行 第x列
                info = int(matrix[y, x])
                plt.text(x, y, info,
                         verticalalignment='center',
                         horizontalalignment='center',
                         color="white" if info > thresh else "black")
        plt.tight_layout()
        # 图形显示更加的紧凑
        plt.show()



if __name__ ==' __main__':
    device = torch.device("cuda:0" if torch.cuda.is_available()else "cpu")
    print(device)
    # 使用验证集的预处理方式
    data_transform = transforms.Compose([transforms.Resize(256),
                                         transforms.CenterCrop(224),
                                         transforms.ToTensor()
                                         transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])

    data_loot = os.path.abspath(os.path.join(os.getcwd(), "../.."))
    # get data root path
    image_path = data_loot + "/data_set/flower_data/"
    # flower data set path

    validate_dataset = datasets.ImageFolder(root=image_path +"val",
                                            transform=data_transform)

    batch_size = 16
    validate_loader = torch.utils.data.DataLoder(validate_dataset,
                                                 batch_size=batch_size,
                                                 shuffle=False,
                                                 num_workers=2)

    net = MobileNetV2(num_classes=5)
    #加载预训练的权重
    model_weight_path = "./MobileNetV2.pth"
    net.load_state_dict(torch.load(model_weight_path, map_location=device))
    net.to(device)

    #read class_indict
    try:
        json_file = open('./class_indicts.json', 'r')
        class_indict = json.load(json_file)
    except Exception as e:
        print(e)
        exit(-1)


    labels = [label for _, label in class_indict.item()]
    # 通过json文件读出来的label
    confusion = ConfusionMatrix(num_classes=5, labels=labels)
    net.eval()
    # 启动验证模式
    # 通过上下文管理器  no_grad  来停止pytorch的变量对梯度的跟踪
    with torch.no_grad():
        for val_data in validate_loader:
            val_images, val_labels = val_data
            outputs = net(val_images.to(device))
            outputs = torch.softmax(outputs, dim=1)
            outputs = torch.argmax(outputs, dim=1)
            # 获取概率最大的元素
            confusion.update(outputs.numpy(), val_labels.numpy())
            # 预测值和标签值
    confusion.plot()
    # 绘制混淆矩阵
    confusion.summary()
    # 来打印各个指标信息
































是这样的 这篇算是一个学习笔记,其中的基础图都源于我的导师

  霹雳吧啦Wz的个人空间_哔哩哔哩_bilibili

欢迎无依无靠的CV同学加入 

讲的非常好 代码其实也是导师给的 

我能做的就是读懂每一行加点注释

给不想看视频的同学留点时间

pytorch 绘制混淆矩阵
all_for_you_的博客
05-10 5409
import matplotlib.pyplot as plt import numpy as np #cm是统计好的混淆矩阵,file_path是存储混淆矩阵图像的路径,epoch为我自己传参过来的测试的次数,可以去掉epoch,看大家的要求。 def plot_Matrix(cm, file_path, epoch): cmap=plt.cm.Blues classes = [‘Social’, ‘Using computer’, ‘Reading’]#规定出来的x,y轴的值, plt.rc(‘font
Python 计算混淆矩阵
05-31
Python计算图像对不同地物分类精确度, 计算分类结果图与标准参考图的混淆矩阵, 对分类结果进行评价
混淆矩阵Python实现 超简单!
土豆大叔的博客
11-30 1万+
Python实现混淆矩阵 废话少说,直接上干货: from sklearn.metrics import confusion_matrix import matplotlib.pyplot as plt plot_confusion_matrix(y_test, y_pred, classes=class_names, normalize=False) # y_test为真实label,y_pred为预测label plot_confusion_matrix函数的具体实现如下,直接复制粘贴到你的代码中即
confusion_混淆矩阵pytorch、模型_混淆矩阵pytorch_混淆矩阵_
10-04
利用pytorch训练得到的深度学习模型,通过测试集数据得到混淆矩阵
常用代码
weixin_43455338的博客
01-17 448
混淆矩阵代码块 import itertools def plot_confusion_matrix(cm, classes, title='Confusion matrix', cmap=plt.cm.Blues): """ This function prints and p...
pytorch进阶学习(七):神经网络模型验证过程中混淆矩阵、召回率、精准率、ROC曲线等指标的绘制与代码
CV在读
04-14 8425
机器学习领域,混淆矩阵(ConfusionMatrix),又称为可能性矩阵或错误矩阵混淆矩阵是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。在下图是否为猫的预测中,表格左上(实际为正和预测为正)和右下(实际为负和预测为负)是预测正确的值。根据左边表格的数据,可以得出右边表格中的数字,即得到了混淆矩阵
pytorch绘制混淆矩阵
热门推荐
默默无闻的博客
12-02 2万+
pytorch测试结果转换为numpy格式 代码主要来自该博文 混淆矩阵的绘制(Plot a confusion matrix) # 测试阶段代码 # 创建一个空矩阵存储混淆矩阵 conf_matrix = torch.zeros(cfg.NUM_CLASSES, cfg.NUM_CLASSES) for batch_images, batch_labels in test_dataloader...
学习笔记:使用pytorch和tensorflow计算分类模型的混淆矩阵
2301_79538126的博客
10-23 424
TN = np.sum(self.matrix) - TP - FP - FN,在源码中,以i=3(i=1~5)为例,TN为前2*2矩阵所有元素之和,在代码中表现为3*3矩阵元素之和减去第3行第3列元素(TP),再减去FP和FN.FP = np.sum(self.matrix[i, :]) - TP,即把矩阵第i行之和减去矩阵的第i行i列元素,即减去TP,在(2)中的第二张图中表现为5,1,3,2相加,0,0,1,0相加,等等。匹配,就应该将混淆矩阵中对应位置的计数值增加 1,以记录一个正确的预测。
pytorch计算混淆矩阵
05-22
PyTorch中,可以使用sklearn库中的confusion_matrix函数来计算混淆矩阵。以下是一个示例代码: ```python import torch from sklearn.metrics import confusion_matrix # 模型预测结果和真实标签 y_pred = torch...
pytorch加入混淆矩阵
02-18
4. 计算混淆矩阵: ```python # 将预测结果和真实标签转换为NumPy数组 preds = np.array(preds) labels = np.array(labels) # 计算混淆矩阵 cm = confusion_matrix(labels, preds) ``` 现在,你可以使用混淆矩阵来...
使用Pytorch计算分类模型的混淆矩阵
Highlight_Jin的博客
09-05 1557
混淆矩阵
详解使用python绘制混淆矩阵(confusion_matrix)
01-01
Summary 涉及到分类问题,我们经常需要通过可视化混淆矩阵来分析实验结果进而得出调参思路,本文介绍如何利用python绘制混淆矩阵(confusion_matrix),本文只提供代码,给出必要注释。 Code​ # -*-coding:utf-8-*- from sklearn.metrics import confusion_matrix import matplotlib.pyplot as plt import numpy as np #labels表示你不同类别的代号,比如这里的demo中有13个类别 labels = ['A', 'B', 'C', 'F', 'G', 'H
Pytorch】进阶学习:深入解析 sklearn.metrics 中的 confusion_matrix(混淆矩阵
最新发布
创作高质量博文,分享知识,共同进步!
03-25 4236
【🔍Pytorch进阶】解锁分类神器🔑!深入剖析sklearn.metrics中的confusion_matrix📊。从原理到实践,让你轻松掌握混淆矩阵的奥秘🌈。可视化技巧助你一臂之力,直观展示模型性能📈。揭秘性能指标,准确评估分类效果🎯。更有局限性分析与改进方法,让你的模型更上一层楼🚀。探索扩展应用,拓宽机器学习视野🌍。读完这篇博客,你将成为混淆矩阵的行家里手!#混淆矩阵 #机器学习 #性能评估 #分类模型 #sklearn
pytorch混淆矩阵计算
Andrew_SJ的博客
12-10 3221
原文链接: CNN中的混淆矩阵 | PyTorch系列(二十三) 英文原文:CNN Confusion Matrix With PyTorch - Neural Network Programming
人工智能学习07--pytorch11--分类网络:使用pytorch和tensorflow计算分类模型的混淆矩阵
AMWICD的博客
03-17 1558
师兄说学目标检测之前先学分类 坏了,内容好多!学学学 感谢up主,好人一生平安 什么是混淆矩阵: 横坐标:每一列属于该类的所有验证样本。每一列所有元素对应真实类别。 纵坐标:网络的预测类别。每一行对应预测结果属于该类的所有样本。 对角线:预测正确的样本个数。 预测值在对角线上分布的越密集,模型的性能就越好。 还能通过混淆矩阵看到这个网络对哪些类别更容易分类出错。混淆矩阵的指标: 精确率precision不等于准确率accuracy!! 准确率:所有预测正确的样本个数 / 所有用于验证的样本个数 (
混淆矩阵:用于多分类模型评估(pytorch)
地中海の养成记
04-14 1万+
这里写目录标题1. 混淆矩阵介绍二级目录三级目录2. 代码实现 1. 混淆矩阵介绍 二级目录 三级目录 2. 代码实现
Pytorch+Tensorboard混淆矩阵可视化
人工智能算法与工程实践
03-10 5919
混淆矩阵是分类任务常用的一种评估方法。尤其是在类别数量不平衡的情况下,相比accuracy,混淆矩阵对哪个类被错误分类具有更直观的解释。 在平时做简单的数据实验时,可以仅用from sklearn.metrics import plot_confusion_matrix或者seaborn对混淆矩阵进行可视化。但是在深度学习训练模型的过程中,在`tensorboard`中可视化混淆矩阵会更方便结果记录和对照。
混淆矩阵:用于多分类模型评估(pytorch)——总结2
Fighting Hua
09-19 3544
混淆矩阵(confusion matrix) 1. 混淆矩阵介绍2. 代码实现2.1 数据集2.2 代码混淆矩阵类2.3 在验证集上计算相关指标2.4 结果 1. 混淆矩阵介绍 这里不多说,可参考 混淆矩阵相关概念调用sklearn库计算混淆矩阵的指标 2. 代码实现 2.1 数据集 此数据集用于多分类任务(检测番茄叶片病虫害)。这里测试的数据集一共1250张图,1000张用于训练,250张用于...
模型评价指标(1)--混淆矩阵Confsion Matrix--PyTorch实现
qq_37170427的博客
08-03 455
模型评价指标--混淆矩阵Confsion Matrix
写文章

热门文章

  • zotero突然不能翻译了 44970
  • 无法完成压缩(zipped)文件来提取向导,怎么解决 32338
  • 第二块显示屏(扩展屏)左右调整 19614
  • 什么是SOTA,SOTA是什么意思 13760
  • 文献翻译考试复习 10606

分类专栏

  • 小技巧 17篇
  • 做视频 1篇
  • CV基础知识 56篇
  • 小陈读paper系列 31篇
  • 算法 11篇
  • 2022江苏大学研一计算机期末考试复习 3篇

最新评论

  • zotero突然不能翻译了

    东东要拼命: 啊 这 一旦好用就开始收费了啊,enmmm我快毕业了,咱就是说技术付费变日常了,研究生的钱国家多涨点老板大方点 求求啦

  • zotero突然不能翻译了

    weixin_45720694: 这个有额度要收费,最开始我用的时候是无VIP的,后面开始收费了,付费买额度

  • 参考文献问号 怎么解决(Latex Overleaf )

    ZXiaoran_: 复制到哪里啊

  • 无法完成压缩(zipped)文件来提取向导,怎么解决

    聪明兵: 还有一种可能是压缩包有密码,默认应用里设置为7zip或其他软件。

  • 参考文献问号 怎么解决(Latex Overleaf )

    -FIONASENIOR!!PEI: 真的行!! 感恩感恩!~!

最新文章

  • 熟悉Realsense和机械臂的控制库(如MoveIt!)的使用,以及基本的PID控制和其他控制算法
  • SD卡,laptop,启动ubtuntu
  • cmake入门
2024年23篇
2023年92篇
2022年49篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东东要拼命

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家江西景观玻璃钢雕塑图片安庆玻璃钢雕塑多少钱咸宁玻璃钢雕塑考拉公司湖北高质量玻璃钢雕塑哪家便宜北京商场充气鲜花美陈玻璃钢雕塑的树脂广西玻璃钢金属雕塑尺寸汕尾玻璃钢雕塑手工制作陕西大型玻璃钢雕塑方法玻璃钢火龙果雕塑价格山西园林景观标识玻璃钢仿铜雕塑玻璃钢宣传雕塑浙江超市商场美陈销售企业南朗玻璃钢雕塑武夷山玻璃钢神像雕塑濮阳玻璃钢卡通雕塑价格报价广东艺术商场美陈报价百货商场美陈图片大全玻璃钢雕塑什么价钱便宜滁州小区玻璃钢雕塑厂家附近校园玻璃钢景观雕塑定做价格玻璃钢雕塑电话咨询菏泽玻璃钢人物卡通雕塑厂家玻璃钢小笼包雕塑玻璃钢游戏雕塑黑龙江人物玻璃钢雕塑生产厂家安阳玻璃钢卡通雕塑价格报价广东节庆商场美陈订购环保玻璃钢雕塑制作句容玻璃钢雕塑设计价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化