精华内容
下载资源
问答
  • 多分类混淆矩阵TPTNFN

    2021-04-08 15:42:41
    本来是想找一下多分类混淆矩阵说明 但是发现网上的都是二分类,下面这种 二分类的图转自博主,下面放上链接 ...用自己的理解了个多分类混淆矩阵的表不知道对不对 和大家分享一下 ...

    本来是想找一下多分类的混淆矩阵说明
    但是发现网上的都是二分类,下面这种
    图转自博主
    二分类的图转自博主,下面放上链接
    https://blog.csdn.net/wf592523813/article/details/95202448
    用自己的理解画了个多分类的混淆矩阵的表不知道对不对
    和大家分享一下
    在这里插入图片描述
    后来问了一下明白人,发现我这个不对TN不是这样归类的
    因为如果按我这个来的话每一类分别算的准确率Acc都是一样的
    应该是这样,为了简单举例
    下面这个图是相对于B类而言的在这里插入图片描述

    展开全文
  • 分类结果画混淆矩阵 采用matlab实现。
  • Matlab画混淆矩阵多分类

    千次阅读 2020-12-09 16:52:13
    在神经网络和机器学习的结果分析中,常常会用混淆矩阵和ROC曲线来分析识别/分类结果的好坏,而且论文中也经常出现这种图。对于卷积神经网络来说画混淆矩阵很简单,要用到函数plotconfusion,格式为plotconfusion...

    在神经网络和机器学习的结果分析中,常常会用混淆矩阵和ROC曲线来分析识别/分类结果的好坏,而且论文中也经常出现这种图。对于卷积神经网络来说画混淆矩阵很简单,要用到函数plotconfusion,格式为plotconfusion(实际标签,预测标签),画出来是这样的:
    混淆矩阵
    实际标签是我们提前就知道的,预测标签在神经网络训练并测试后会得到。
    对于支持向量机来说如何画混淆矩阵呢?其实也很简单,只不过网上很少有代码,我看的也是稀里糊涂的,昨天看到今天才弄明白,所以想分享给大家,其实很简单的,用的也是plotconfusion函数。
    支持向量机的实际标签和预测标签是数值形式的,而这个函数要求的是分类数组形式的,这就需要用到函数categorical,格式为B=categorical(a),a是实际标签或则预测标签(数值格式的,其实就是数字),通过这个函数就把数值转化为了分类数组,然后再调用plotconfusion函数就OK了。
    这里预测标签是double型数值
    这里预测标签是double型数值↑↑↑

    用catorical函数将数值转化为分类数组
    转化为分类数组形式↑↑↑
    然后用plotconfusion函数就可以画出来了
    Ps:这两图片用到的数据不一样,所以画出来有所差别,应该就是这样画的,终于明白了,看别人讲的好复杂,有一种画出来的是灰色的图,那个网上有代码,但是没有这个彩色的好看。
    好,第一篇文章,到此为止。下次再见。

    展开全文
  • 目标分类混淆矩阵After training a machine learning classifier, the next step is to evaluate its performance using relevant metric(s). The confusion matrix is one of the evaluation metrics. 训练完...

    多目标分类的混淆矩阵

    After training a machine learning classifier, the next step is to evaluate its performance using relevant metric(s). The confusion matrix is one of the evaluation metrics.

    训练完机器学习分类器后,下一步就是使用相关指标评估其性能。 混淆矩阵是评估指标之一。

    A confusion matrix is a table showing the performance of a classifier given some truth values/instances (supervised learning kind of).

    混淆矩阵是一个表,显示在给定一些真值/实例(监督学习的情况)的情况下分类器的性能。

    But calculating of confusion matrix for object detection and instance segmentation tasks is less intuitive. First, it is necessary to understand another supporting metric: Intersection over Union (IoU). A key role in calculating metrics for object detection and instance segmentation tasks is played by Intersection over Union (IoU).

    但是,用于对象检测和实例分割任务的混淆矩阵的计算不太直观。 首先,有必要了解另一种支持指标:联盟交叉口(IoU)。 Intersection over Union(IoU)在计算对象检测和实例分割任务的度量标准中扮演着关键角色。

    联合路口(IoU) (Intersection over Union (IoU))

    IoU, also called Jaccard index, is a metric that evaluates the overlap between the ground-truth mask (gt) and the predicted mask (pd). In object detection, we can use IoU to determine if a given detection is valid or not.

    IoU (也称为Jaccard索引 )是一种度量,用于评估地面真假蒙版( gt )与预测蒙版( pd )之间的重叠。 在对象检测中,我们可以使用IoU来确定给定的检测是否有效。

    IoU is calculated as the area of overlap/intersection between gt and pd divided by the area of the union between the two, that is,

    将IoU计算为gtpd之间的重叠/交叉区域除以两者之间的并集区域,即

    Image for post

    Diagrammatically, IoU is defined as shown below:

    IoU的示意图如下所示:

    Image for post
    Fig 1 (Source: Author)
    图1(来源:作者)

    Note: IoU metric ranges from 0 and 1 with 0 signifying no overlap and 1 implying a perfect overlap between gt and pd.

    注意: IoU度量值的范围是0和1,其中0表示没有重叠,而1表示gtpd之间存在完美的重叠。

    A confusion matrix is made up of 4 components, namely, True Positive (TP), True Negative (TN), False Positive (FP) and False Negative (FN). To define all the components, we need to define some threshold (say α) based on IoU.

    混淆矩阵由4个分量组成,即正正(TP),正负(TN),误正(FP)和误负(FN) 。 要定义所有组件,我们需要基于IoU定义一些阈值(例如α)

    Image for post
    Fig 2 : Confusion matrix over 2 classes: 1 and 2 (Source: Author)
    图2:2个类别(1和2)上的混淆矩阵(来源:作者)
    • True Positive (TP) — This is an instance in which the classifier predicted positive when the truth is indeed positive, that is, a detection for which IoU ≥ α.

      真实正值(TP)-在这种情况下,分类器在事实确实为正值时预测为正值,也就是说,检测到IoU≥α。
    • False Positive (FP) — This is a wrong positive detection, that is, a detection for which IoU < α.

      假阳性(FP)-这是一个错误的阳性检测,即IoU <α的检测。
    • False Negative (FN) — This is an actual instance that is not detected by the classifier.

      假阴性(FN)-这是分类器未检测到的实际实例。
    • True Negative (TN) — This metric implies a negative detection given that the actual instance is also negative. In object detection, this metric does not apply because there exist many possible predictions that should not be detected in an image. Thus, TN includes all possible wrong detection that were not detected.

      真负数(TN)-真实实例也为负数时,此度量标准表示负数检测。 在对象检测中,此度量标准不适用,因为存在许多不应在图像中检测到的可能预测。 因此,TN包括未检测到的所有可能的错误检测。

    These concepts can intuitively be understood with some diagrammatic examples (let's consider the IOU threshold, α = 0.5)

    这些概念可以通过一些示例直观地理解(让我们考虑IOU阈值,α= 0.5)

    Image for post
    Image for post
    Fig 3: LEFT: False Negative (FN) , RIGHT: True Positive (TP), Credits: Photo by Daniel Jensen on Unsplash
    无花果3:左:假阴性(FN),右:真阳性(TP),鸣谢: 丹尼尔·詹森 ( Daniel Jensen )摄影: Unsplash

    Remark : By the definition of IoU threshold, Fig 3 RIGHT turns to be FP if we choose threshold above 0.86 and Fig 4 RIGHT becomes a TP if we choose IoU threshold below 0.14

    备注:根据IoU阈值的定义,如果选择高于0.86的阈值,则图3 RIGHT变为FP,如果选择低于0.14的IoU阈值,图4 RIGHT变为TP

    Other metrics that can be derived from confusion matrix includes:

    可以从混淆矩阵得出的其他指标包括:

    • Precision is the ability of a classifier to identify only relevant objects. It is the proportion of correct positive predictions and is given by

      精度是分类器仅识别相关对象的能力。 它是正确肯定预测的比例,由下式给出

    Image for post
    • Recall is a metric which measures the ability of a classifier to find all the relevant cases (that is, all the ground-truths). It is the proportion of true positive detected among all ground-truths and is defined as

      召回率是衡量分类器查找所有相关案例(即所有真实情况)的能力的度量。 它是在所有地面真相中检测到的真实正数的比例,定义为

    Image for post

    F₁ score is harmonic mean of precision and recall.

    F₁得分是精度和查全率的调和平均值。

    Image for post

    (Example)

    Consider the following image with the ground truths (dark blue) and classifier detections (red). Through observation can you be able to tell the number of TP, FP and FN?

    考虑下面的图像,其中包含地面实况(深蓝色)和分类器检测(红色)。 通过观察,您可以分辨出TP,FP和FN的数量吗?

    Image for post
    Fig 5 (Source : Fuji-SfM dataset (cited in the reference section))
    图5(来源:Fuji-SfM数据集(在参考部分中引用))

    Python实现 (Python Implementation)

    In Python, a confusion matrix can be calculated using Shapely library. The following function ( evaluation(ground,pred,iou_value) → 6-value tuple for TP, FP, FN, Precision, Recall, F₁) can be used to determine confusion matrix for above image (Fig 5)

    在Python中,可以使用Shapely库计算混淆矩阵。 可以使用以下函数( evaluation(ground,pred,iou_value)evaluation(ground,pred,iou_value)TP,FP,FN,Precision,Recall,F₁的 6值元组)来确定上述图像的混淆矩阵(图5)

    Parameters:

    参数:

    • ground — is n × m × 2 array where n is number of the ground truth instances for the given image, m is the number of (x,y) pairs sampled on the circumference of the mask.

      ground —是n × m × 2的数组,其中n是给定图像的地面真实实例的数量, m是在蒙版圆周上采样的(x,y)对的数量。

    • pred is p × q × 2 array where p is the number of detections, and q is the number of (x,y) points sampled for the prediction mask

      predp×q×2数组,其中p是检测次数, q是为预测掩码采样的(x,y)点数

    • iou_value is the IoU threshold

      iou_valueIoU阈值

    For Fig 5 and IoU threshold, α = 0.5, evaluation(ground,pred,iou_value)

    对于图5和IoU阈值,α= 0.5, evaluation(ground,pred,iou_value)

    TP: 9   FP: 5   FN: 0   GT: 10
    Precall: 0.643 Recall: 1.0 F1 score: 0.783

    Thank you for reading :-)

    感谢您的阅读:-)

    Jordi Gene-Mola, Ricardo Sanz-Cortiella, Joan R. Rosell-Polo, Josep-Ramon Morros, Javier Ruiz-Hidalgo, Verónica Vilaplana, & Eduard Gregorio. (2020). Fuji-SfM dataset [Data set]. Zenodo. http://doi.org/10.528/zenodo.3712808

    Jordi Gene-Mola,Ricardo Sanz-Cortiella,Joan R.Rosell-Polo,Josep-Ramon Morros,Javier Ruiz-Hidalgo,VerónicaVilaplana和Eduard Gregorio。 (2020)。 Fuji-SfM数据集[数据集]。 Zenodo。 http://doi.org/10.528/zenodo.3712808

    Everingham, M., Eslami, S. A., Van Gool, L., Williams, C. K., Winn, J., and Zisserman, A. The pascal visual object classes challenge: A retrospective. International journal of computer vision, 111(1):98–136, 2015.

    马萨诸塞州埃弗林汉姆(Everingham),路易斯安那州埃斯拉米(Eslami),路易斯安那州范古尔(Van Gool),威廉姆斯(CK),温恩(J.Winn)和泽西曼(A.Zisserman)。 国际计算机视觉杂志,111(1):98-136,2015年。

    Fawcett, T. An introduction to ROC analysis. Pattern recognition letters, 27(8):861–874, 2006.

    Fawcett,T。ROC分析简介。 模式识别字母,27(8):861–874,2006年。

    翻译自: https://towardsdatascience.com/confusion-matrix-and-object-detection-f0cbcb634157

    多目标分类的混淆矩阵

    展开全文
  • 混淆矩阵(confusion matrix)是一种常用的分类模型评估指标,经可视化的混淆矩阵可以帮助我们直观地了解到模型对各类样本地分类情况。 对于一个分类模型来说,每一个样本均有两种属性,真实标签...


    如果不想看前面的介绍可以直接点击目录转到“代码实现”与“参数讲解”部分

    混淆矩阵简介

    混淆矩阵(confusion matrix)是一种常用的分类模型评估指标,经可视化的混淆矩阵可以帮助我们直观地了解到模型对各类样本地分类情况。

    对于一个分类模型来说,每一个样本均有两种属性,真实标签与预测标签,记为 y r e a l , y p r e d i c t y_{real}, y_{predict} yreal,ypredict。由此出发我们可以定义混淆矩阵:
    对于 n n n分类模型,混淆矩阵为一 n × n n\times n n×n阶方阵:
    M c = [ m i , j ] n × n M_c=[m_{i,j}]_{n\times n} Mc=[mi,j]n×n
    其第 i i i行第 j j j列元素定义为:
    m i , j = n y r e a l = i , y p r e d i c t = j n y r e a l = i m_{i, j}=\frac{n_{y_{real=i}, y_{predict=j}}} {n_{y_{real=i}}} mi,j=nyreal=inyreal=i,ypredict=j
    即混淆矩阵的第 i i i行第 j j j列为真实标签为 i i i的样本被预测为 j j j类的比例。

    基于python matplotlib/sklearn库的混淆矩阵代码实现

    由于并没有找到现成的绘制混淆矩阵的函数,因此基于matplotlibsklearn库的相关函数自己编写实现混淆矩阵的绘制

    效果示例

    利用39节点电网仿真数据进行,数据共包含5000个样本,每个样本分为不稳定、稳定、潮流不收敛三类,在数据集中分别用0, 1, 2表示。选取支持向量机作为分类模型。
    利用4000个样本组成训练集训练模型,再利用1000个样本组成的测试机对模型性能进行测试,并利用plot_matrix(y_true, y_pred, labels_name)函数将结果绘制为混淆矩阵。
    示例代码如下:

    # 读取数据并划分训练集与测试集
    test_features, test_labels = read_data(ADDRESS)
    feature_train, feature_test, label_train, label_test = train_test_split(test_features, test_labels,
                                                                            test_size=0.2, random_state=0)
    # 利用训练集训练支持向量机模型
    svc = SVC(kernel='rbf')
    svc.fit(feature_train, label_train)
    # 利用训练好的模型对测试集进行分类
    label_test_svc = svc.predict(feature_test)
    
    # 根据真实标签与预测标签绘制混淆矩阵
    plot_matrix(label_test, label_test_svc, [0, 1, 2], title='confusion_matrix_svc',
                axis_labels=['unstable', 'stable', 'non-convergence'])
    

    最终结果如下所示:
    混淆矩阵

    代码实现

    plot_matrix(y_true, y_pred, labels_name)函数如下所示:

    import matplotlib.pyplot as pl
    from sklearn import metrics
    # 相关库
    
    def plot_matrix(y_true, y_pred, labels_name, title=None, thresh=0.8, axis_labels=None):
    # 利用sklearn中的函数生成混淆矩阵并归一化
        cm = metrics.confusion_matrix(y_true, y_pred, labels=labels_name, sample_weight=None)  # 生成混淆矩阵 
        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]  # 归一化
    
    # 画图,如果希望改变颜色风格,可以改变此部分的cmap=pl.get_cmap('Blues')处
        pl.imshow(cm, interpolation='nearest', cmap=pl.get_cmap('Blues'))
        pl.colorbar()  # 绘制图例
    
    # 图像标题
        if title is not None:
            pl.title(title)
    # 绘制坐标
        num_local = np.array(range(len(labels_name)))
        if axis_labels is None:
            axis_labels = labels_name
        pl.xticks(num_local, axis_labels, rotation=45)  # 将标签印在x轴坐标上, 并倾斜45度
        pl.yticks(num_local, axis_labels)  # 将标签印在y轴坐标上
        pl.ylabel('True label')
        pl.xlabel('Predicted label')
    
    # 将百分比打印在相应的格子内,大于thresh的用白字,小于的用黑字
        for i in range(np.shape(cm)[0]):
            for j in range(np.shape(cm)[1]):
                if int(cm[i][j] * 100 + 0.5) > 0:
                    pl.text(j, i, format(int(cm[i][j] * 100 + 0.5), 'd') + '%',
                            ha="center", va="center",
                            color="white" if cm[i][j] > thresh else "black")  # 如果要更改颜色风格,需要同时更改此行
    # 显示
        pl.show()
    

    参数讲解

    plot_matrix函数参数包括:
    y_true样本的真实标签,为一向量
    y_pred样本的预测标签,为一向量,与真实标签长度相等
    labels_name样本在数据集中的标签名,如在示例中,样本的标签用0, 1, 2表示,则此处应为[0, 1, 2]

    title=None图片的标题
    thresh=0.8临界值,大于此值则图片上相应位置百分比为白色
    axis_labels=None最终图片中显示的标签名,如在示例中,样本标签用0, 1, 2表示分别表示失稳、稳定与潮流不收敛,我们最终图片中显示后者而非前者,则可令此参数为[‘unstable’, ‘stable’, ‘non-convergence’]

    展开全文
  • python画混淆矩阵

    万次阅读 热门讨论 2018-05-24 14:21:35
    对于分类问题,为了直观表示各类别分类的准确性,一般使用混淆矩阵M. 混淆矩阵M的每一行代表每个真实类(GT),每一列表示预测的类。即:Mij表示GroundTruth类别为i的所有数据中被预测为类别j的数目。 这里给出两...
  • 分类任务,在最后的实验部分需要画混淆矩阵,来说明实验的结果。 import matplotlib.pyplot as plt guess = ["normal","cancer"] fact = [ "normal","cancer"] classes = list(set(fact)) classes.sort...
  • pyhton分类画混淆矩阵

    千次阅读 2019-05-18 09:51:13
    1.求取预测的矩阵 import numpy as np from sklearn.metric import confusion_matrix from keras import model from keras.models import predict c=np.zeros(shape=(9,9)) #建立一个空矩阵,一共分为9类 for i in ...
  • 画混淆矩阵sklearn

    2021-10-14 10:50:37
    画混淆矩阵,需要(真实标签,预测标签,标签列表) y_test, y_pred, display_labels 混淆矩阵用: sklearn库中的confusion_matrix 混淆矩阵画图用: sklearn库中的ConfusionMatrixDisplay matplotlib库中的...
  • 多分类任务的混淆矩阵处理

    千次阅读 2018-09-26 20:43:49
    多分类任务的混淆矩阵处理 在多分类任务中,不适合使用PR曲线和ROC曲线来进行指标评价,但我们仍可以通过混淆矩阵来进行处理。可以通过matplotlib的matshow()函数,直观地展示分类结果的好坏。 先使用cross_val_...
  • 如何对预测结果进行可视化是对比分析的关键一步,在实际多分类问题,除了简单展示模型预测精度外,如何分别不同类别之间的预测结果对于分析样本相关性和属性区别具有重要意义,在MATLAB中一般通过混淆矩阵confusion ...
  • Matlab画混淆矩阵

    千次阅读 2018-04-16 11:24:04
    最近自己的工作要用到混淆矩阵,因此简单的了解了一下混淆矩阵。本博客主要是参照博客https://blog.csdn.net/xuyingjie125/article/details/78417760来写的,在此向原作者表示感谢。 首先来看一下什么是混淆矩阵吧...
  • 画混淆矩阵(转载)

    千次阅读 2018-12-20 15:43:18
    fromsklearn.metricsimportconfusion_matrix #导入混淆矩阵函数 cm = confusion_matrix(y,yp) #输出为混淆矩阵 importmatplotlib.pyplotasplt ...# 画混淆矩阵图,配色风格使用cm.Greens plt.co...
  • 混淆矩阵提供有关错误分类的信息。 如何以矩阵形式对每个类的模式在其实际类中与其他类进行分类
  • def evaluate1(self, x_test: numpy.ndarray, y_test: numpy.ndarray) -> None: predictions = self.predict(x_test) # print(type(predictions)) # print(y_test) # print(predictions) ...
  • 衡量一个分类器性能的更好的办法是混淆矩阵。它基于的思想是:计算类别A被分类为类别B的次数。例如在查看分类器将图片5分类成图片3时,我们会看混淆矩阵的第5行以及第3列。 为了计算一个混淆矩阵,我们首先需要有一...
  • 比如说类别文类问题,那么每一个类别分到其他类别都有一些数据,但是分到自己类别的毕竟,这样计算百分比之后就形成了一个矩阵,如果分类正确率高的话,那么对角线上的元素的值,也就是自己到自己的那一部分,...
  • 这里写目录标题1. 混淆矩阵介绍二级目录三级目录2. 代码实现 1. 混淆矩阵介绍 二级目录 三级目录 2. 代码实现
  • python画混淆矩阵2

    千次阅读 2019-09-09 22:24:08
    在做分类的时候,经常需要画混淆矩阵,下面我们使用python的matplotlib包,scikit-learning机器学习库也同样提供了例子:http://scikit-learn.org/stable/auto_examples/plot_confusion_matrix.html, 但是这样的图...
  • ''' 1.分类模型之混淆矩阵: 每一行和每一列分别对应样本输出中的每一个类别,行表示实际类别,列表示预测类别。 A类别 B类别 C类别 A类别 5 0 0 B类别 0 6 ...
  • 混淆矩阵

    2019-12-06 18:15:49
    标题名字来源:矩阵形式表明个类别是否混淆(让你也混淆) 标题用处:总结分类模型预测结果的情况分析表 标题表达形式:按照真实类别和模型预测类别判断进行汇总 标题举例:(自图像,丑)(红色打√为判断正确...
  • 然后调用test命令即可生成混淆矩阵。 生成效果如下: 延伸阅读: 1. https://github.com/borisgin/caffe/blob/confusion_matrix/src/caffe/layers/confusion_matrix_layer.cpp 直接在caffe层里添加了...
  • Matplotlib绘制混淆矩阵

    千次阅读 2021-05-26 20:29:07
    对于机器学习多分类模型来说,其评价指标除了精度之外,常用的还有混淆矩阵分类报告,下面来展示一下如何绘制混淆矩阵,这在论文中经常会用到。 代码如下: import itertools import matplotlib.pyplot as plt ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,484
精华内容 1,793
关键字:

多分类混淆矩阵怎么画