[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:目录前言:第1章混淆矩阵1.1二分类的混淆矩阵1.2三分类的混淆矩阵1.3N分类的混淆矩阵1.4混淆矩阵的作用第2章准确率、精确率、召回率2.1准确率/“正确率”:预测结果正确的百分比(只关心预测结果正确的样本,包括负样本)2.2精确率:预测结果为正例样本中真实为正例的比例(只关心预测结果为正的样本)2.3召回率:所有真实样本中,判为真实样本的.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/124437069


目录

前言:

第1章 混淆矩阵

1.1 二分类的混淆矩阵

1.2 三分类的混淆矩阵

1.3 N分类的混淆矩阵

1.4 混淆矩阵的作用

第2章 准确率、精确率、召回率

2.1 准确率/“正确率”:预测结果正确的百分比(只关心预测结果正确的样本,包括负样本)

2.2 精确率:预测结果为正例样本中真实为正例的比例(只关心预测结果为正的样本)

2.3 召回率:所有真实样本中,判为真实样本的比率(只关心真实样本中的正样本)

2.4 公式汇总

2.5 各种指标的几何意义

 2.6 F1值

2.7 N分类的指标


前言:

分类模型与回归模型的重要区别是,分类模型的预测值是离散量,而回归模型的预测值是连续量。回归模型的输出的数值是有实际的物理意义,数值之前是可以进行数值运算,可以进行比较大小的,因此分类模型的评估基础是残差(预测值减去真实值),而分类模型的输出值没有物理意义,只是某种类型的一种指代,输出数值之间不能进行直接运算,也无法进行比较,如果0,1,2,3,4五中分类,它们之间是没有大小的,不能说分类0就比分类4小。这就决定了分类模型的评估指标与回归模型的评估指标是完全不一样的计算方法!

第1章 混淆矩阵

1.1 二分类的混淆矩阵

匹配矩阵实际是一个表格,用来记录分类模型对样本数据的预测结果样本数据真实情况之间关系的可视化表示的表格

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

在上述案例中:

样本数据:就是上述9张图片。

样本真实标签类别:就是上述图片是否为汉堡,如果是汉堡,这标示成圆圈,如果不是,这表示成X. 在上述案例中,只有两张图是汉堡,其他图片都不是汉堡,位置为(1,2)、(2,3)

样本预测结果类别:模型对上述图片预测是否为汉堡的结果,如果是汉堡,这标示成圆圈,如果不是,这表示成X. 在上述案例中,有三张图被预测为汉堡,位置范围(2, 2)、(2,3)、(3,3)

很显然:

(2,2)和(3,3)是预测错误的,把非汉堡预测为汉堡了,这种称为

(1,2)也是预测错误的,把真实的汉堡预测成非汉堡了,这种称为漏网之鱼

(2,3)是预测对的,真实的汉堡,预测也为汉堡

其他也是预测对的,真实图片不是汉堡,预测结果也是“不是汉堡”

于是得到如下的表格:

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

 在上图中,预测和真实类别都用了“是”和“不是”表示。

为了进一步的区分方格子中数值的含义(用来标识预测的结果

样本预测结果类别:“是”用Postive表示,即正样本、“不是”用Negative表示,即负样本。

样本预测结果属性(不是类别)预测正确用True表示,预测错误用“Flase”表示。 

注意:

这里的正确(True)有两种情形:标签是汉堡,预测为汉堡;标签不是汉堡,预测不是汉堡,都表明是预测正确。

这里的错误(False)有两种情形:标签是汉堡,预测不是汉堡;标签不是汉堡,预测是汉堡,都表明是预测错误。

于是得到如下的图,即混淆矩阵:

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

(1)TP(True Positive): True表示预测正确,Possitve预测结果汉堡,表示是“正”样本。

TP表示预测正确,且预测为正样本的数目。

(2)TN(True Negative): True表示预测正确,Negative表示预测结果不是汉堡,表示是“负”样本。

TN表示预测正确,且预测为负样本的数目。

(3)FP(True Positive): False表示预测错误,Possitve表示预测结果汉堡,表示是“正”样本。

FP表示预测错误,且预测为样本的数目(说明真实标签为样本)

 (4)FN(True Negative): False表示预测错误,Negative表示预测结果不是汉堡,表示是“负”样本。

FP表示预测错误,且预测为样本的数目(说明真实标签为样本)

所有的绿色位置(TP+TN)都表示预测正确。

1.2 三分类的混淆矩阵

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

我们期望绿色位置中的数值尽可能的大,橙色位置中的数值尽可能得小,最好为0.

所有绿色位置都表示预测正确。

1.3 N分类的混淆矩阵

 [机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

我们期望绿色位置中的数值尽可能的大,橙色位置中的数值尽可能得小,最好为0.

所有绿色位置都表示预测正确。

1.4 混淆矩阵的作用

有了混淆矩阵的表格化的数据,我们期望:

  • 绿色位置中的数值尽可能的大。
  • 橙色位置中的数值尽可能得小,最好为0。

现在哟两个分类器,分布得到如下的混淆矩阵的表格:

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

 但有没有数学化的公式,能够利用混淆矩阵的数据,精确的表示模型不同维度的指标呢?

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

答案是“有”:准确率、精确率、召回率等关键性指标。

第2章 准确率、精确率、召回率

2.1 准确率/“正确率”:预测结果正确的百分比(只关心预测结果正确的样本,包括负样本)

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

 准确率A =  模型判断正确的样本数量/总样本数 = (1+5)/(1+5+1+2) = 6/9 =  67%

 准确率B =  模型判断正确的样本数量/总样本数 = (2+3)/(1+5+1+2) = 5/9 =  56%

准确率关注:正样本和负样本

2.2 精确率:预测结果为正例样本中真实为正例的比例(只关心预测结果为正的样本)

准确率关注:只关注正样本,不关注负样本。

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

 精确率A= 正确判定为正样本的数量/预测为正样本的总数=(1)/(1+2) = 1/3 = 33%

 精确率B= 正确判定为正样本的数量/预测为正样本的总数=(2)/(2+3) = 2/5 = 40%

2.3 召回率:所有真实样本中,判为真实样本的比率(只关心真实样本中的正样本)

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

 召回率A = 真实样本中正样本预测正确的样本/真实样本中正样本总数=1/2=50%

 召回率B = 真实样本中正样本预测正确的样本/真实样本中正样本总数=2/3=66% 

2.4 公式汇总

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

2.5 各种指标的几何意义

 [机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

 2.6 F1值

召回率与准确率是矛盾的。

召回率越高,就需要更宽松的条件把更多的样本预测为正样本。

准确率越高,就需要更严格的条件更精确的标识样本的正负属性,不能随意的把样本标识为正样本。

F1就是权衡召回率和准确率的指标,期望在召回率联合准确率中间取得一个最佳值,这种最佳值的情况下,召回率不是最高的,准确率也不是最高的,但他们整体的效果是最好的。

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

2.7 N分类的指标

[机器学习与scikit-learn-51]:模型评估-图解分类模型的评估指标(准确率、精确率、召回率)与代码示例

N分类的指标与二分类类似, 不同的是:

准确率与针对于总体而言的,这与二分类一样。

精确率和召回率是针对某个具体的分类而言的,而不是总体,这与二分类不同。


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/124437069

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185497.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • esp-idf的内存管理——tlsf算法

    esp-idf的内存管理——tlsf算法目录1最初还不是tlsf2为什么要引入tlsf3idf中使用的tlsf算法的设计与实现4源码走读参考1最初还不是tlsf2为什么要引入tlsf3idf中使用的tlsf算法的设计与实现4源码走读参考[1]半文钱的博客[2]upstream所在的github地址注意事项放到内存调试去说:用户需要关注的:内存的硬件特性(caps)内存的访问速度内存是否支持原子操作内存是否可以由CPU直接访问用户在使用时:用户自己也要对自己的应用需要使用的内存做一些安排,有的内存比

  • java二维数组初始化为0_怎样把java二维数组初始化为0

    java二维数组初始化为0_怎样把java二维数组初始化为0展开全部新new出来的二维数组就是已经初始为0了,或者利62616964757a686964616fe58685e5aeb931333337623462用循环依次赋值0;例如:publicclassMain{publicstaticvoidmain(String[]args){inta[][]=newint[5][5];for(inti=0;i<5;i++){for…

  • conda常用命令:安装,更新,创建,激活,关闭,查看,卸载,删除,清理,重命名,换源,问题

    condaupdate-nbaseconda//update最新版本的condacondacreate-nxxxxpython=3.6//创建xxxx环境condaactivatexxxx//开启xxxx环境condadeactivate//…

  • 影视3D建模和游戏3D建模对比,哪个更有发展前景

    影视3D建模和游戏3D建模对比,哪个更有发展前景影视3D建模和游戏3D建模,两者之间最大和最明显的差异是:游戏开发永远有多边形建模预算。影视建模方面,对于多边形数量都没有限制。对于电影来说,唯一限制是时间,按时,按预算生产合格的模型。游戏建模设计不能随意增加多边形面数,必须依靠纹理细节提升模型的质量。由于多边形数量必须很低,需要其他方法将更多细节放入模型中,目前最好的方法当然是使用纹理。游戏建模设计技术游戏中经常使用的技术是细节层次。意味单个游戏会有几个不同的细节级别。玩家离模型越远,资产的细节就越少。随着玩家越来越近,较低分辨率模型将被.

  • Truncate用法详解[通俗易懂]

    Truncate用法详解[通俗易懂]前言:当我们想要清空某张表时,往往会使用truncate语句。大多时候我们只关心能否满足需求,而不去想这类语句的使用场景及注意事项。本篇文章主要介绍truncate语句的使用方法及注意事项。1.truncate使用语法truncate的作用是清空表或者说是截断表,只能作用于表。truncate的语法很简单,后面直接跟表名即可,例如:truncatetabletbl_name …

    2022年10月22日
  • 使用@Profiled注解或自定义AOP拦截打印日志json序列化失败

    使用@Profiled注解或自定义AOP拦截打印日志json序列化失败项目中使用@Profiled注解方式进行统一日志打印输出fastjson踩坑记录一下1:@Profiled注解方式如上图:方法上使用注解@Profiled,因为我的入参有HttpServletResponse,日志打印时会对所有入参进行序列化操作,所对以HttpServletResponse进行JSON.toJSONString()转换会抛出以上异常,此时要么干掉HttpServletResponse,或者换一种方式手动注入HttpServletResponse即可解决以上异常,如下图:

发表回复

您的电子邮箱地址不会被公开。

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