模型评估之混淆矩阵

模型评估之混淆矩阵在前面的文章中我们讲到了回归模型和分类模型的评估指标,区分了准确率和精确率的区别,并且比较了精确率和召回率内在的联系。本篇文章我们再来学习另外一个评估方法,即混淆矩阵(confusion_matrix)。在讲矩阵之前,我们先复习下之前在讲分类评估指标中定义的一些符号含义,如下:TP(TruePositive):将正类预测为正类数,真实为0,预测也为0 FN(FalseNegative):将正类预测为负类数,真实为0,预测为1 FP(FalsePositive):将负类预测为正类数,真实为

大家好,又见面了,我是你们的朋友全栈君。

在前面的文章中我们讲到了回归模型和分类模型的评估指标,区分了准确率和精确率的区别,并且比较了精确率和召回率内在的联系。本篇文章我们再来学习另外一个评估方法,即混淆矩阵(confusion_matrix)。

在讲矩阵之前,我们先复习下之前在讲分类评估指标中定义的一些符号含义,如下:

  • TP(True Positive):将正类预测为正类数,真实为0,预测也为0
  • FN(False Negative):将正类预测为负类数,真实为0,预测为1
  • FP(False Positive):将负类预测为正类数, 真实为1,预测为0
  • TN(True Negative):将负类预测为负类数,真实为1,预测也为1

混淆矩阵定义及表示含义

混淆矩阵是机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值,矩阵的列表示预测值,下面我们先以二分类为例,看下矩阵表现形式,如下:

模型评估之混淆矩阵二分类混淆矩阵

现在我们举个列子,并画出混淆矩阵表,假如宠物店有10只动物,其中6只狗,4只猫,现在有一个分类器将这10只动物进行分类,分类结果为5只狗,5只猫,那么我们画出分类结果混淆矩阵,并进行分析,如下(我们把狗作为正类):

模型评估之混淆矩阵猫狗分类混淆矩阵

通过混淆矩阵我们可以轻松算的真实值狗的数量(行数量相加)为6=5+1,分类得到狗的数量(列数量相加)为5=5+0,真实猫的数量为4=0+4,分类得到猫的数量为5=1+4。同时,我们不难发现,对于二分类问题,矩阵中的4个元素刚好表示TP,TN,FP,TN这四个符号量,如下图:

模型评估之混淆矩阵

那么对于二分类问题来说,

精确率Precision=a/(a+c)=TP/(TP+FP),TP+FP是实际被检索到的样本数。

召回率recall=a/(a+b)=TP/(TP+FN),TP+FN是应该检索到的样本数

准确率accuracy=(a+d)/(a+b+c+d)=(TP+FN+FP+TN),可以看到准确率中的分子值就是矩阵对角线上的值。

刚才分析的是二分类问题,那么对于多分类问题,混淆矩阵表示的含义也基本相同,这里我们以三类问题为例,看看如何根据混淆矩阵计算各指标值。

模型评估之混淆矩阵多分类混淆矩阵

与二分类混淆矩阵一样,矩阵行数据相加是真实值类别数,列数据相加是分类后的类别数,那么相应的就有以下计算公式;

精确率_类别1=a/(a+d+g)

召回率_类别1=a/(a+b+c)

 

Python中的sklearn库提供了相应的方法来输出矩阵数据,非常方便,函数如下:

sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)

其中,y_true:是样本真实分类结果,y_pred 是样本预测分类结果 ,labels是所给出的类别,通过这个可对类别进行选择 ,sample_weight 是样本权重。这里我们用代码演示三分类问题混淆矩阵(这里我们用confusion_matrix生成矩阵数据,然后用seaborn的热度图绘制出混淆矩阵数据),如下:

#导入依赖包
import seaborn as sns;from sklearn.metrics import confusion_matriximport
matplotlib.pyplot as pltsns.set()
y_true = ["cat", "dog", "cat", "cat", "dog", "rebit"]
y_pred = ["dog", "dog", "rebit", "cat", "dog", "cat"]
C2= confusion_matrix(y_true, y_pred, labels=["dog", "rebit", "cat"])
sns.heatmap(C2,annot=True)

多分类混淆矩阵

模型评估之混淆矩阵

 

至此,关于模型评估个各指标已全部介绍完毕,后面的文章我们将开始讲解一些经典算法的推导及使用,喜欢的小伙伴请点击关注!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146686.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月14日 下午1:20
下一篇 2022年5月14日 下午1:20


相关推荐

  • 前女友婚礼,python破解婚礼现场的WIFI,把名称改成了[通俗易懂]

    前女友婚礼,python破解婚礼现场的WIFI,把名称改成了[通俗易懂]python小哥哥,参加前女友婚礼,破解了婚礼现场的WIFI,还把WiFi的名称给改成了。。。

    2022年6月12日
    36
  • @PostConstruct注解

    @PostConstruct注解好多人以为是Spring提供的。其实是Java自己的注解。Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。通常我们会是在Spring…

    2022年4月5日
    181
  • HTML5期末大作业:节日网站设计——中国传统节日-春节(8个页面) HTML+CSS+JavaScript 中国传统节日春节网页HTML代码 学生网页课程设计期末作业下载 春节大学生网页设计制作成

    HTML5期末大作业:节日网站设计——中国传统节日-春节(8个页面) HTML+CSS+JavaScript 中国传统节日春节网页HTML代码 学生网页课程设计期末作业下载 春节大学生网页设计制作成HTML5 期末大作业 节日网站设计 中国传统节日 春节 8 个页面 HTML CSS JavaScript 临近期末 你还在为 HTML 网页设计结课作业 老师的作业要求感到头大 HTML 网页作业无从下手 网页要求的总数量太多 没有合适的模板 等等一系列问题 你想要解决的问题 在这篇博文中基本都能满足你的需求 原始 HTML CSS JS 页面设计 web 大学生网页设计作业源码 这是一个不错的网页制作 画面精明 非常适合初学者学习使用 作品介绍 1 网页作品简介方面 HTML 期末大学生网页设计作业 喜

    2026年1月31日
    3
  • Flume中sources、channels、sinks的常用配置(多个案例)

    Flume中sources、channels、sinks的常用配置(多个案例)Flume 中 sources channels sinks 的常用配置 多个案例 文章目录 Flume 中 sources channels sinks 的常用配置 多个案例 Flume 基础及架构案例 1 netcat gt memory gt logger 案例 2 exec gt file gt logger 案例 3 spooldir gt memory gt hdfs 读取目录文件到 HDFS 案例 4 选择器 selector 两种类型 replicating 副本 multiplexin

    2026年3月17日
    2
  • rc522命令表_linux驱动程序文件

    rc522命令表_linux驱动程序文件硬件平台:1主控:SMDKExynos4412POPS5M8767A2RFID模块:君盾集团提供的RC522模块3通信接口:SPI软件平台:AndroidICS&kernelversion3.0.15一,使能主控端SPI1硬件使能:从SMDK原理图上可以看到SPI0与I2C共用,SPI1已经连接到其它设备,SPI2未用,故这里选用SPI2。2软件使能:SMDKExyno…

    2025年11月27日
    3
  • Java:Map转List (用stream实现)

    Java:Map转List (用stream实现)例子 Map Integer String mapDemo newHashMap lt gt map put 10 apple map put 20 orange map put 30 banana map put 40 watermelon map put 50 dragonfruit 一 Map Integer Object 转 List amp l Integer Object Integer String

    2026年3月16日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号