精华内容
下载资源
问答
  • 混淆矩阵python
    千次阅读
    2021-03-05 10:43:29

    #coding=utf-8
    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn.metrics import confusion_matrix
    
    save_flg = True
    
    # confusion = confusion_matrix(y_test, y_pred)
    confusion = np.array([[97, 2,  0,  0, 1, 0],
                         [ 4, 94,  1,  21, 0, 0],
                         [ 3,  2, 95,  0, 0, 0],
                         [ 0,  0,  0, 98, 2, 0],
                         [ 3,  1,  0,  0,96, 0],
                         [ 0,  1,  3,  0, 6,90]])
    
    plt.figure(figsize=(5, 5))  #设置图片大小
    
    
    # 1.热度图,后面是指定的颜色块,cmap可设置其他的不同颜色
    plt.imshow(confusion, cmap=plt.cm.Blues)
    plt.colorbar()   # 右边的colorbar
    
    
    # 2.设置坐标轴显示列表
    indices = range(len(confusion))    
    classes = ['A', 'B', 'C', 'D', 'E', 'F']  
    # 第一个是迭代对象,表示坐标的显示顺序,第二个参数是坐标轴显示列表
    plt.xticks(indices, classes, rotation=45) # 设置横坐标方向,rotation=45为45度倾斜
    plt.yticks(indices, classes)
    
    
    # 3.设置全局字体
    # 在本例中,坐标轴刻度和图例均用新罗马字体['TimesNewRoman']来表示
    # ['SimSun']宋体;['SimHei']黑体,有很多自己都可以设置
    plt.rcParams['font.sans-serif'] = ['SimHei']  
    plt.rcParams['axes.unicode_minus'] = False
    
    
    # 4.设置坐标轴标题、字体
    # plt.ylabel('True label')
    # plt.xlabel('Predicted label')
    # plt.title('Confusion matrix')
    
    plt.xlabel('预测值')
    plt.ylabel('真实值')
    plt.title('混淆矩阵', fontsize=12, fontfamily="SimHei")  #可设置标题大小、字体
    
    
    # 5.显示数据
    normalize = False
    fmt = '.2f' if normalize else 'd'
    thresh = confusion.max() / 2.
    
    for i in range(len(confusion)):    #第几行
        for j in range(len(confusion[i])):    #第几列
            plt.text(j, i, format(confusion[i][j], fmt),
            fontsize=16,  # 矩阵字体大小
            horizontalalignment="center",  # 水平居中。
            verticalalignment="center",  # 垂直居中。
            color="white" if confusion[i, j] > thresh else "black")
    
    
    #6.保存图片
    if save_flg:  
        plt.savefig("./picture/confusion_matrix.png")
    
    
    # 7.显示
    plt.show()

    效果:

     

    更多相关内容
  • 混淆矩阵Python实现 超简单!

    千次阅读 多人点赞 2020-11-30 17:03:57
    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_...

    Python实现混淆矩阵

    废话少说,直接上干货:

    from sklearn.utils.multiclass import unique_labels
    from sklearn.metrics import confusion_matrix
    import matplotlib.pyplot as plt
    
    # y_test为真实label,y_pred为预测label,classes为类别名称,是个ndarray数组,内容为string类型的标签
    class_names = np.array(["0","1"]) #按你的实际需要修改名称
    plot_confusion_matrix(y_test, y_pred, classes=class_names, normalize=False) 
    

    在这里插入图片描述

    plot_confusion_matrix函数的具体实现如下,直接复制粘贴到你的代码中即可!

    求各位看官老爷点个赞!

    def plot_confusion_matrix(y_true, y_pred, classes,
                              normalize=False,
                              title=None,
                              cmap=plt.cm.Blues):
        """
        This function prints and plots the confusion matrix.
        Normalization can be applied by setting `normalize=True`.
        """
        if not title:
            if normalize:
                title = 'Normalized confusion matrix'
            else:
                title = 'Confusion matrix, without normalization'
    
        # Compute confusion matrix
        cm = confusion_matrix(y_true, y_pred)
        # Only use the labels that appear in the data
        classes = classes[unique_labels(y_true, y_pred)]
        if normalize:
            cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
            #print("Normalized confusion matrix")
        else:
            pass
            #print('Confusion matrix, without normalization')
    
        #print(cm)
    
        fig, ax = plt.subplots()
        im = ax.imshow(cm, interpolation='nearest', cmap=cmap)
        ax.figure.colorbar(im, ax=ax)
        # We want to show all ticks...
        ax.set(xticks=np.arange(cm.shape[1]),
               yticks=np.arange(cm.shape[0]),
               # ... and label them with the respective list entries
               xticklabels=classes, yticklabels=classes,
               title=title,
               ylabel='True label',
               xlabel='Predicted label')
    
        ax.set_ylim(len(classes)-0.5, -0.5)
    
        # Rotate the tick labels and set their alignment.
        plt.setp(ax.get_xticklabels(), rotation=45, ha="right",
                 rotation_mode="anchor")
    
        # Loop over data dimensions and create text annotations.
        fmt = '.2f' if normalize else 'd'
        thresh = cm.max() / 2.
        for i in range(cm.shape[0]):
            for j in range(cm.shape[1]):
                ax.text(j, i, format(cm[i, j], fmt),
                        ha="center", va="center",
                        color="white" if cm[i, j] > thresh else "black")
        fig.tight_layout()
        return ax
    
    展开全文
  • 06 绘制混淆矩阵 python

    2022-07-05 08:49:58
    06 绘制混淆矩阵
  • 混淆矩阵 python实现

    千次阅读 2019-09-09 20:47:13
    涉及到分类问题,我们经常需要通过可视化混淆矩阵来分析实验结果进而得出调参思路,本文介绍如何利用python绘制混淆矩阵(confusion_matrix),本文只提供代码,给出必要注释。 Code​ # -*-coding:utf-8-*- from ...

    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', 'I', 'J', 'K', 'L', 'M', 'N', 'O']
    
    
    '''
    具体解释一下re_label.txt和pr_label.txt这两个文件,比如你有100个样本
    去做预测,这100个样本中一共有10类,那么首先这100个样本的真实label你一定
    是知道的,一共有10个类别,用[0,9]表示,则re_label.txt文件中应该有100
    个数字,第n个数字代表的是第n个样本的真实label(100个样本自然就有100个
    数字)。
    同理,pr_label.txt里面也应该有1--个数字,第n个数字代表的是第n个样本经过
    你训练好的网络预测出来的预测label。
    这样,re_label.txt和pr_label.txt这两个文件分别代表了你样本的真实label和预测label,然后读到y_true和y_pred这两个变量中计算后面的混淆矩阵。当然,不一定非要使用这种txt格式的文件读入的方式,只要你最后将你的真实
    label和预测label分别保存到y_true和y_pred这两个变量中即可。
    '''
    y_true = np.loadtxt('../Data/re_label.txt')
    y_pred = np.loadtxt('../Data/pr_label.txt')
    
    tick_marks = np.array(range(len(labels))) + 0.5
    
    def plot_confusion_matrix(cm, title='Confusion Matrix', cmap=plt.cm.binary):
        plt.imshow(cm, interpolation='nearest', cmap=cmap)
        plt.title(title)
        plt.colorbar()
        xlocations = np.array(range(len(labels)))
        plt.xticks(xlocations, labels, rotation=90)
        plt.yticks(xlocations, labels)
        plt.ylabel('True label')
        plt.xlabel('Predicted label')
    
    
    cm = confusion_matrix(y_true, y_pred)
    np.set_printoptions(precision=2)
    cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
    print cm_normalized
    plt.figure(figsize=(12, 8), dpi=120)
    
    ind_array = np.arange(len(labels))
    x, y = np.meshgrid(ind_array, ind_array)
    
    for x_val, y_val in zip(x.flatten(), y.flatten()):
        c = cm_normalized[y_val][x_val]
        if c > 0.01:
            plt.text(x_val, y_val, "%0.2f" % (c,), color='red', fontsize=7, va='center', ha='center')
    # offset the tick
    plt.gca().set_xticks(tick_marks, minor=True)
    plt.gca().set_yticks(tick_marks, minor=True)
    plt.gca().xaxis.set_ticks_position('none')
    plt.gca().yaxis.set_ticks_position('none')
    plt.grid(True, which='minor', linestyle='-')
    plt.gcf().subplots_adjust(bottom=0.15)
    
    plot_confusion_matrix(cm_normalized, title='Normalized confusion matrix')
    # show confusion matrix
    plt.savefig('../Data/confusion_matrix.png', format='png')
    plt.show()
    

    Result
    在这里插入图片描述
    Instructions
    按照代码中的注释将labels、y_true 、y_pred替换为你自己的数据即可

    展开全文
  • 涉及到分类问题,我们经常需要通过可视化混淆矩阵来分析实验结果进而得出调参思路,本文介绍如何利用python绘制混淆矩阵(confusion_matrix),本文只提供代码,给出必要注释。 Code​ # -*-coding:utf-8-*- from ...
  • 利用python绘制混淆矩阵

    万次阅读 多人点赞 2021-11-13 20:33:48
    利用python绘制混淆矩阵,直接附代码。 from sklearn.metrics import confusion_matrix import pandas as pd import matplotlib.pyplot as plt y_pred = [] y_true = [] # 对上面进行赋值 C=confusion_matrix(y_...

    利用python绘制混淆矩阵,直接附代码。

    from sklearn.metrics import confusion_matrix
    import matplotlib.pyplot as plt
    
    y_pred = [] # ['2','2','3','1','4'] # 类似的格式
    y_true = [] # ['0','1','2','3','4'] # 类似的格式
    # 对上面进行赋值
    
    C = confusion_matrix(y_true, y_pred, labels=['0','1','2','3','4']) # 可将'1'等替换成自己的类别,如'cat'。
    
    plt.matshow(C, cmap=plt.cm.Reds) # 根据最下面的图按自己需求更改颜色
    # plt.colorbar()
    
    for i in range(len(C)):
        for j in range(len(C)):
            plt.annotate(C[j, i], xy=(i, j), horizontalalignment='center', verticalalignment='center')
    
    # plt.tick_params(labelsize=15) # 设置左边和上面的label类别如0,1,2,3,4的字体大小。
    
    plt.ylabel('True label')
    plt.xlabel('Predicted label')
    # plt.ylabel('True label', fontdict={'family': 'Times New Roman', 'size': 20}) # 设置字体大小。
    # plt.xlabel('Predicted label', fontdict={'family': 'Times New Roman', 'size': 20})
    # plt.xticks(range(0,5), labels=['a','b','c','d','e']) # 将x轴或y轴坐标,刻度 替换为文字/字符
    # plt.yticks(range(0,5), labels=['a','b','c','d','e'])
    plt.show()
    

    简单理解混淆矩阵的元素含义,例如下面第一行第二个的“3”表示实际标签为类别0的预测成类别1的有3个样本。

    附效果图:
    请添加图片描述
    请添加图片描述
    请添加图片描述
    如果需要切换不同的颜色,如:
    在这里插入图片描述

    展开全文
  • 主要介绍了keras训练曲线,混淆矩阵,CNN层输出可视化实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Python 计算混淆矩阵

    2018-05-31 16:48:40
    Python计算图像对不同地物分类精确度, 计算分类结果图与标准参考图的混淆矩阵, 对分类结果进行评价
  • 深度学习自学记录(3)——两种多分类混淆矩阵Python实现(含代码)1、什么是混淆矩阵2、分类模型评价指标3、两种多分类混淆矩阵3.1直接打印出每一个类别的分类准确率。3.2打印具体的分类结果的数值4、总结 1、...
  • 已知混淆矩阵情况下,python计算第二类精确率召回率F1得分及总体精度kappa系数。
  • Python数据分析:混淆矩阵

    千次阅读 2022-03-14 08:05:48
    混淆矩阵 ● 选择题 以下关于混淆矩阵说法错误的是: A TP是被正确分类的正例个数 B FN是被错误分类的正例个数 C 主对角元素是不同类别样例被正确分类的个数 D 可以用来评定监督学习算法的性能 ​●问题解析 1.混淆...
  • python 使用numpy计算混淆矩阵

    千次阅读 2022-04-18 19:10:57
    python 使用numpy计算混淆矩阵
  • python可视化——混淆矩阵 最近学习模型评估,分享一下混淆矩阵这个小模块。这里用的是鸢尾花数据集(https://pan.baidu.com/s/1WwY7e4bN4r-Mz8fNKW7VOA) 提取码jdta 首先是导入库,并设置一下图片格式大小 import ...
  • 今天小编就为大家分享一篇python sklearn包——混淆矩阵、分类报告等自动生成方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 使用python matplotlib绘制混淆矩阵今天使用了python matplotlib包,绘制混淆矩阵。基本代码参考官网教程,在此基础上增加了格网显示。代码说明:cm - 混淆矩阵的数值, 是一个二维numpy数组classes - 各个类别的...
  • 如何用python计算分类模型的混淆矩阵
  • 使用Python绘制混淆矩阵,原创,直接使用即可,样式可以自由变换。 混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标...
  • python matplotlib绘制混淆矩阵并配色

    千次阅读 2022-04-13 18:44:00
    文章目录步骤1:网络测试结果保存步骤2:矩阵绘制混淆矩阵绘制结果 步骤1:网络测试结果保存 以pytorch为例,在测试阶段保存结果的参考代码为: resultTxtName = "result.txt" resultfiledir = os.path.join(web_dir...
  • 大家从python基础到如今的入门,想必都对python有一定基础,今天小编给大家带来一个关于python的高阶内容——绘制混淆矩阵,一起来看下吧~介绍:混淆矩阵通过表示正确/不正确标签的计数来表示模型在表格格式中的准确...
  • python对分类结果进行混淆矩阵可视化(代码演示) 代码 import numpy as np import os import matplotlib.pyplot as plt cls_num=5 # 样本总共有几类 labels=[0,1,3,4,1,1,1,0,4,2] # 真实target predicted=[0,1,3,...
  • ''' # ======================================================= # 计算训练集和测试集的混淆矩阵 from sklearn.metrics import confusion_matrix; if args.confusion_matrix: y_train_pred = clf.predict(X_train...
  • 本篇文章我们再来学习另外一个评估方法,即混淆矩阵(confusion_matrix)。在讲矩阵之前,我们先复习下之前在讲分类评估指标中定义的一些符号含义,如下:TP(True Positive):将正类预测为正类数,真实为0,预测也为0....
  • 如何在多分类任务中绘制混淆矩阵
  • python混淆矩阵.py

    2020-08-21 10:59:32
    python编写的混淆矩阵计算结果,里面有关键步骤的详细说明,使用者可以自行修改自己加以利用。其中的分类数据需要自己通过相关软件获得,另外分类图和预测图的类别代表数值要一致,否则出错。
  • 前面说过混淆矩阵是我们在处理分类问题时,很重要的指标,那么如何更好的把混淆矩阵给打印出来呢,直接做表或者是前端可视化,小编曾经就尝试过用前端(D5)做出来,然后截图,显得不那么好看。。代码:import ...
  • python 混淆矩阵可视化

    千次阅读 2019-10-01 18:37:11
    python 混淆矩阵 可视化
  • 目录总览PyCM是一个用Python编写的多类混淆矩阵库,它同时支持输入数据向量和直接矩阵,并且是用于分类后模型评估的适当工具,支持大多数分类和整体统计参数。 PyCM是混淆矩阵的瑞士军刀,主要针对需要大量指标用于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,238
精华内容 5,295
关键字:

混淆矩阵python