什么是混淆矩阵 首先给出定义:在机器学习领域,特别是统计分类问题中,混淆矩阵(confusion matrix)是一种特定的表格布局,用于可视化算法的性能,矩阵的每一行代表实际的类别,而每一列代表预测的类别...它的行代表真实的类别,列代表预测的类别。以第一行为例,真正的类别标签是 0,从列方向的预测标签来看,有 8 个实例被预测为了 0,有 2 个实例被预测为了 1。...也就是说,在这 10 个真实标签为 0 实例中,有 8 个被正确分类,有 2 个被错误分类。 用同样的思路看第二行,那么就很容易理解了。...以 cat 这一行的结果为例:由于行方向代表真是标签,列方向代表预测的类别,因此就能够从这一行的数值中得到猫的正确检测率有 75%,而被误检为狗的概率有 12%。...从最后一列也能看出,有 4% 的猫存在漏检。 除了猫狗之间容易出现误识别,牛和马,公交车和轿车,沙发和椅子之间也都存在误识别。 如果我们单看混淆矩阵的最右边一列,就能够看出每个类别漏检的概率。
它以矩阵的形式描绘样本数据的真实属性和分类预测结果类型之间的关系,是用来评价分类器性能的一种常用方法。 我们可以通过一个简单的例子来直观理解混淆矩阵。...,数轴的标签表示真实属性,而横轴的标签表示分类的预测结果。...此矩阵的第一行第一列这个数字2表示ant被成功分类成为ant的样本数目,第三行第一列的数字1表示cat被分类成ant的样本数目,诸如此类。...混淆矩阵的每一行数据之和代表该类别的真实的数目,每一列之和代表该类别的预测的数目,矩阵的对角线上的数值代表被正确预测的样本数目。 那么这个混淆矩阵是如何绘制的呢?...这里给出两种简单的方法,一是使用seaborn的热力图来绘制,可以直接将混淆矩阵可视化; C=confusion_matrix(y_true, y_pred, labels=["ant", "bird"
用go语言,已知一个n*n的01矩阵, 只能通过通过行交换、或者列交换的方式调整矩阵, 判断这个矩阵的对角线是否能全为1,如果能返回true,不能返回false。...我们升级一下: 已知一个n*n的01矩阵, 只能通过通过行交换、或者列交换的方式调整矩阵, 判断这个矩阵的对角线是否能全为1,如果不能打印-1。 如果能,打印需要交换的次数,并且打印怎么交换。...灵捷3.5 大体步骤如下: 1.遍历矩阵的每一行和每一列,统计每行和每列的1的个数。...2.如果某一行或某一列的1的个数超过n/2(n为矩阵的大小),则无法通过交换操作使得对角线上的元素全为1,直接输出-1。...8.如果能够满足条件,则输出交换次数k和交换操作: • 遍历swap数组,输出每次交换的行号和列号。 总的时间复杂度为O(n^2),其中n为矩阵的大小。
在这个(10 x 10)的矩阵中,行依然表示样本的真实值,列依然表示算法预测样本的预测值,因此对于第 i 行第 j 列的位置表示的是样本的真实值为 i 预测值为 j 的样本数量。...i 预测值为 i 的样本数量相对来说比较多,而第 i 行第 i 列的位置就是混淆矩阵中的对角线。...通过观察混淆矩阵依然会发现算法会犯一些错误,比如矩阵第4行的第0列为2(从第0行第0列开始,下同),表示的是有两个样本真实值为数字4但是算法错误预测为数字0。...不过关注算法预测正确的部分是没有意义的,我们真正需要找到的是那些算法预测错误的部分,所以我们需要适当的处理一下混淆矩阵。...比如对于error_matrix矩阵的第1行第9列元素值(从第0行第0列开始),表示真实为数字1但是算法错误预测为数字9的所有样本数占所有真实为数字1的样本总数的比重。
为检验模型在测试数据集上的预测效果,需要构建混淆矩阵和绘制ROC曲线,其中混淆矩阵用于模型准确率、覆盖率、精准率指标的计算;ROC曲线用于计算AUC值,并将AUC值与0.8相比,判断模型的拟合效果,代码如下...如上图所示,将混淆矩阵做了可视化处理,其中主对角线的数值表示正确预测的样本量,剩余的4 720条样本为错误预测的样本。经过对混淆矩阵的计算,可以得到模型的整体预测准确率为92.30%。...(X_test) # 构建混淆矩阵 cm = pd.crosstab(mnb_pred,y_test) # 绘制混淆矩阵图 sns.heatmap(cm, annot = True, cmap = '...接下来利用如上的切词结果,构造文档词条矩阵,矩阵的每一行代表一个评论内容,矩阵的每一列代表切词后的词语,矩阵的元素为词语在文档中出现的频次。...,y_test) # 绘制混淆矩阵图 sns.heatmap(cm, annot = True, cmap = 'GnBu', fmt = 'd') # 去除x轴和y轴标签 plt.xlabel('Real
4.2.1 矩阵的数组表示 【数据结构】数组和字符串(一):矩阵的数组表示 4.2.2 特殊矩阵的压缩存储 矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。...但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造成很大的空间浪费。...通过这种方式,可以用较少的空间表示稀疏矩阵,并且可以快速地进行行和列的遍历操作。每个节点的 LEFT 和 UP 指针可以用来定位其左邻和上邻非零元素,从而实现矩阵的访问和操作。 0....创建一个新的节点,并将行、列和值存储在节点的相应字段中。...通过行表头节点数组获取当前行的行链表头节点。 遍历当前行的行链表,打印每个节点的行、列和值。 打印换行符。
“ 分类问题是机器学习算法中最基础和重要的问题,本文用R语言,对网上的Irvine数据集,通过线性回归方法,构建线性分类器。...并统计出预测结果与实际结果的混淆矩阵,通过计算ROC和AUC,判断分类器性能。” 几个概念 一、混淆矩阵(confusion matrix)及相关指标 下图是混淆矩阵的例子和相应指标的计算公式。...AUC为曲线下方的面积,面积越大,证明效果越好。 实例代码 1、数据准备。导入数据,并随机抽取70%作为训练集,剩下30%作为测试集,并将变量与标签列拆开。...,预测测试集的结果,并结合测试集的真实标签,统计混淆矩阵。...使用包pROC分别绘制训练集和测试集的ROC曲线,并计算出相应的AUC值。
列x刻度标签的旋转角度(以度为单位)。cell_values:布尔值,默认为True。如果为True,则绘制单元格值。cell_fmt:字符串,默认为'.2f'。...函数用于绘制混淆矩阵的可视化图形。...混淆矩阵是一个在机器学习和模式识别中常用的表,它展示了算法在特定数据集上的分类性能。具体来说,混淆矩阵显示了算法预测的类别与实际类别之间的关系。...show_normed:是否显示归一化后的值,默认为False。class_names:类别标签列表,用于在混淆矩阵的轴上显示类别名称,默认为None。...axis:Matplotlib的Axes对象,如果提供,则在该对象上绘制混淆矩阵,否则创建一个新的Axes对象,默认为None。
同时选取DataFrame的行和列 # 读取college数据集,给行索引命名为INSTNM;选取前3行和前4列 In[23]: college = pd.read_csv('data/college.csv...# 选取不连续的行和列 In[27]: college.iloc[[100, 200], [7, 15]] Out[27]: ?...# 用loc和列表,选取不连续的行和列 In[28]: rows = ['GateWay Community College', 'American Baptist Seminary of the West...用整数和标签选取数据 # 读取college数据集,行索引命名为INSTNM In[33]: college = pd.read_csv('data/college.csv', index_col='...只能用于DataFrame的行和Series,也不能同时选取行和列。
首先来看YOLOv5原本输出的混淆矩阵,图中灰色覆盖的地方是原本输出的各类别,也就是输出的正例,最后一行和一列是背景类。 列是模型预测的结果,行是标签的真实结果。...for i in range(self.nc + 1): print(' '.join(map(str, self.matrix[i]))) 阅读代码可以发现,混淆矩阵再绘制时对每一列单独进行了归一化...,那么再绘制之前,混淆矩阵存储了每一个预测结果和真实结果的数目。...漏检目标数目只需要将混淆矩阵最后一行相加,虚检目标数目只需要将混淆矩阵最后一列相加,总目标数目则将混淆矩阵所有数量相加。...,而只需采用混淆矩阵中的正例样本数目,否则分母将虚检的目标也混合进去,导致结果偏小。
本文目录 什么是混淆矩阵 混淆矩阵有关的三级指标 2.1 一级指标 2.2 二级指标 2.3 三级指标 计算混淆矩阵的实例 用Python计算混淆矩阵并图形展示 4.1 加载包 4.2 加载数据 4.3...定义绘制混淆矩阵的函数 4.4 绘制单个混淆矩阵 4.5 设定不同的阈值一次绘制多个混淆矩阵 一、什么是混淆矩阵 ?...为了便于大家记忆,可以把混淆矩阵中的P和N看成模型的预测结果positive和negative,这里的positive和negative不表示好和坏,只表示模型的类别1(positive)和0(negative...接下来展示模型判断一批商户是否存在赌博风险的数据,利用这批数据绘制混淆矩阵。 flag列是真实标签,1代表商户存在赌博行为,0代表商户不存在赌博行为。...pred列是模型预测标签,1代表模型预测商户存在赌博行为,0代表模型预测商户不存在赌博行为。
那么,训练集和测试集中,不同主题的新闻分布如何?我们可以借助 DataFrame 某列的 value_counts 方法完成统计。然后使用 plot 函数进行可视化显示。...print(news_cut(test_content)) 现在利用封装的分词函数,对训练集和测试集中的新闻内容进行分词处理,分词结果保存到对应 DataFrame 对象的 ”分词文章“ 一列。...使用邻居的标签进行投票时,用预测样本与邻居样本的距离的倒数作为权重。然后使用 fit 方法,在训练集中训练模型。...混淆矩阵从样本的真实标签和模型预测标签两个维度对测试集样本进行分组统计,然后以矩阵的形式展示。借助混淆矩阵可以很好地分析模型在每一类样本上的分类效果。...为了更直观地分析,我们借助 Python 中可视化包 seaborn 提供的 heatmap 函数,将混淆矩阵可视化。
有了预测输出结果,下面我们就可以用更多的方法,检验分类效果了。 根据前文的提示,这里我们主要用到两项统计功能: 分类报告 混淆矩阵 我们先从 Scikit-learn 软件包导入对应的功能。...我们用同样的数据查看混淆矩阵,看看到底发生了什么。 print(confusion_matrix(test['Exited'], pred)) ?...混淆矩阵的读法是,行代表实际分类,列代表预测分类,分别从0到1排列。...如果咱们的测试集里面,标签分类0和1的个数是均衡的(一样一半),那这种笨模型,应该获得 50% 的准确率。...我们更加关心的,是这次的分类报告,以及混淆矩阵。 分类报告是这样的: ? 注意这一次,类别1上面的几项指标,终于不再是0了。 ? 混淆矩阵中,类别1里,也有36个预测正确的样本了。 成功了!
虽然混淆矩阵在二分类问题中被广泛使用,但它同样适用于多分类问题。本文将深入探讨多分类混淆矩阵的概念、解读方法、应用场景以及提供一个实际示例来帮助您更好地理解和使用它。什么是混淆矩阵?...混淆矩阵是一个用于可视化分类模型性能的表格,它将模型的预测结果与实际标签进行比较。对于多分类问题,混淆矩阵的结构可能会略有不同,但基本思想相同。...,每一列代表模型的预测类别。...True Negatives (TN):模型正确预测为非第 i 类的样本数。混淆矩阵的应用混淆矩阵为评估分类模型提供了丰富的信息,有助于分析模型的性能和调整模型的参数。...结合精确度、精确率、召回率和F1分数等指标,可以更全面地评估模型的性能,进而改进模型或进行进一步的分析。深入理解和应用混淆矩阵有助于提高机器学习项目的质量和效果。
如:第一行,5+1=6,表示真实情况狗有6只. ③矩阵每一列数字求和的值,其含义:预测值中,预测为该列对应类别的数目!...解释:混淆矩阵对角元素全是预测正确的,数字的值表示各类别预测正确的数目;横(行)的数字求和,表示某类别真实值的个数,竖(列)的数字求和,表示模型预测为该类别的个数!...,语义分割一般都是多分类的,但也有二分类,对于二分类的语义分割评价指标可参考上述介绍理解,对于多分类的语义分割评价指标,其是基于二分类的思想进行发展延展的,即:将混淆矩阵行、列扩宽(类别增多),进行计算...a:标注图(转换为一行输入),即真实的标签 参数b:预测图(转换为一行输入),即预测的标签 参数n: 类别数 ''' def fast_hist(a, b, n): #k为掩膜(去除了255这些点...2的像素点被错误地预测为类别1; ②绿色表格的每一行求和得到的数字的含义是真实标签中属于某一类别的所有像素点数目,拿第一行为例,3+0+0=3,即真实属于类别0的像素点一共3个; ③绿色表格的每一列求和得到的数字的含义是预测为某一类别的所有像素点数目
然后,我们会看到如何使用这个预测张量,以及每个样本的标签,来创建一个混淆矩阵。这个混淆矩阵将允许我们查看我们的网络中哪些类别相互混淆。...> len(train_set.targets) 60000 一个混淆矩阵将告诉我们模型在哪里被混淆了。更具体地说,混淆矩阵将显示模型正确预测的类别和模型不正确预测的类别。...我们相对于train_preds张量的第一维传递训练集标签张量(targets)和argmax,这为我们提供了混淆矩阵数据结构。...解释混淆矩阵 混淆矩阵具有三个轴: 预测标签(类) 真实标签 热图值(彩色) 预测标签和真实标签向我们显示了我们正在处理的预测类。...矩阵对角线表示矩阵中预测和真值相同的位置,因此我们希望此处的热图更暗。 任何不在对角线上的值都是不正确的预测,因为预测和真实标签不匹配。
混淆矩阵 混淆矩阵定义为(类x类)大小的矩阵,因此对于二进制分类,它是2x2,对于3类问题,它是3x3,依此类推。为简单起见,让我们考虑二元分类并了解矩阵的组成部分。 ?...例如-如果类标签的分布偏斜,则仅预测多数类会给您带来高分(高估性能),而对于平衡类而言,准确性更有意义。...,调整阈值然后填充相关的混淆矩阵和其他属性始终是一个好习惯。...可以绘制不同阈值的精确召回曲线,并根据用例的敏感性选择阈值。...这是一条曲线,绘制在y轴的TPR(正确率)和x轴的FPR(错误率)之间,其中TPR和FPR定义为- ? 如果您注意到,TPR和Recall具有相同的表示形式,就像您正确分类了多少正确样本一样。
数据集是从印度安德拉·普拉德什东北部收集的。标签列是用于分为组(患肝病或不患肝病)的类标签label。此数据集包含441名男性患者记录和142名女性患者记录。...1.5 数据列数值转化 因为在进行处理时,LogisticRegression的标签列需要为或者为,但是本数据集的标签列label的值为,所以我们需要先进行转化。...print(classification_report(y_test, y_predict)) # 绘制混淆矩阵热力图 cm2 = confusion_matrix(y_test, y_predict...) print(test_roc_auc) # 打印模型分类预测报告 print(classification_report(y_test, y_pred_ran, digits=2)) # 绘制混淆矩阵热力图...) print(test_roc_auc) # 打印模型分类预测报告 print(classification_report(y_test, y_pred_ran, digits=2)) # 绘制混淆矩阵热力图
然后,在这种情况下,在它每一行(对应一个样本的所有类别预测)上找到最大值的索引。这个索引实际上是模型预测的类别标签(0-8)。...用绘制结果,但是,数据集太大了,我们只想绘制某一批次的数据。...它以实际类别(真实标签)和预测类别为基础,将样本的分类结果进行统计和总结。混淆矩阵的每一行代表了真实类别,每一列代表了预测类别。...混淆矩阵的常见形式如下,我写成英文更容易理解: confusion matrix 用一个例子理解: classifier 混淆矩阵中的四个关键术语是: True Positive (TP): 即实际为正且被预测也为正的样本数...对比论文中的模型评估结果(下图),我们的模型不够完美,差距还比较大: 论文评估结果 将我们的混淆矩阵转化为百分数: 混淆矩阵(百分比) 虽然我们和作者的数据集不一样,但是我的研究方法是没错的,如果后期学到更多处理技巧
,另一个得到的是类别: 使用predict()得到的是概率值:这里将其用round进行四舍五入后进行展开。...) print(cnf_matrix) #行、列的索引就是标签id,这里有两类,用0,1,表示 [[44 6] [ 1 8]] 混淆矩阵中的四个值分别代表TP、FP、TN、PN 根据混淆矩阵,我们可以计算二分类评价指标...5、绘制混淆矩阵 import matplotlib.pyplot as plt %matplotlib inline def cm_plot(y, yp, labels_name): from...sklearn.metrics import confusion_matrix #导入混淆矩阵函数 cm = confusion_matrix(y, yp) #混淆矩阵 plt.matshow...TPR = TP / ( TP+ FN) AUC:就是roc曲线和横坐标围城的面积。 如何绘制?
领取专属 10元无门槛券
手把手带您无忧上云