一、引入

我们在训练模型的过程中,需要用未知的数据集(为被训练过的)送入训练好的模型进行验证,来检测该模型是否适用于该项目。哪该如何来进行判断呢?这个就需要评价指标了。模型的评价指标有很多,比如:精确率(查准率)、F1-Score、召回率(查全率)、准确率、P-R曲线、ROC曲线等。我们这里就主要介绍精确率(查准率)、F1-Score、召回率(查全率)、准确率。

二、评价指标介绍

不同的分类指标有不同的含义,比如在商品推荐系统中,希望更精准的了解客户需求,避免推送用户不感兴趣的内容,精确率就更加重要;在疾病检测的时候,不希望查漏任何一项疾病,这时查全率就更重要。当两者都需要考虑时,F1-Score就是一种参考指标。

注意:评价模型过程中,需要不同的评价指标从不同角度对模型进行全面的评价,在诸多的评价指标中,大部分指标只能片面的反应模型的一部分性能,如果不能合理的运用评估指标,不仅不能发现模型本身的问题,而且会得出错误的结论。

精确率(查准率)、F1-Score、召回率(查全率)、准确率 是我们在分类模型中用到的最多的四个评价指标,不同的评价指标有不同的计算公式。

accuracy = 预测正确的/预测的总数

哪在这些公式里面的TP、TN、FP、FN是什么意思呢?哪请看下面的内容:

真正例(True Positive,TP):表示实际为正被预测为正的样本数量
真反例(True Negative,TN):表示实际为负被预测为负的样本的数量
假正例(False Positive,FP):表示实际为负但被预测为正的样本的数量
假反例(False Negative,FN):表示实际为正但被预测为负的样本数量

三、二分类

什么是二分类?二分类就是我们的预测结果就只有两类,并且这两类是可以用数值来表示的。

假设我们现在有关需求,要来正确判断出猫和狗这两类,于是我们训练的一个模型,现在需要来评判该模型能否在实际中正常使用,于是我们把未知数据集 [猫,猫,狗,狗,猫] 送入模型得到预测结果为 [猫,狗,狗,猫,猫]。

y_true = [猫,猫,狗,狗,猫]

y_pred = [猫,狗,狗,猫,猫]

TP = 1

TN = 2

FP = 1

FN = 1

accuracy = 3/5 = 0.6

precision = 2/(2+1) = 05

recall = 2/(1+1) = 0.5

F1 = (2*0.5*0.5)/(0.5+0.5) = 0.5

from sklearn.metrics import recall_score, f1_score, precision_score, accuracy_score# [猫,猫,狗,狗,猫]
y_true = [0, 0, 1, 1, 0]
# [猫,狗,狗,猫,猫]
y_pred = [0, 1, 1, 0, 0]print("accuracy:%.2f" % accuracy_score(y_true, y_pred))
print("precision:%.2f" % precision_score(y_true, y_pred))
print("recall:%.2f" % recall_score(y_true, y_pred))
print("f1-score:%.2f" % f1_score(y_true, y_pred))

四、多分类

多分类就是模型的预测结果不止有两类,有多类,比如说,三类,四类等。那么这时我们该如何求指标呢?

假设现在有三类,真实值为 [猫,狗,狗,鼠,猫,鼠],预测值为 [鼠,猫,狗,猫,猫,鼠]。

我们可以将其看成 3(3类) 个二分类。

第一个:[猫,other]

y_true = [猫,other,other,other,猫,other]

y_pred = [other,猫,other,猫,猫,other]

TP = 1               TN = 2                FP = 2               FN  = 1

precision = 1/3 = 0.33

recall = 1/2 = 0.5

F1 = (2 * precision * recall )/(precision + recall ) = 0.40

第二个:[狗,other]

y_true = [other,狗,狗,other,other,other]

y_pred = [other,other,狗,other,other,other]

TP = 1               TN = 4                FP = 0               FN  = 1

precision = 1/1 = 1

recall = 1/2 = 0.5

F1 = (2 * precision * recall )/(precision + recall ) = 0.67

第三个:[鼠,other]

y_true = [other,other,other,鼠,other,鼠]

y_pred = [鼠,other,other,other,other,鼠]

TP = 1               TN = 3                FP = 1               FN  = 1

precision = 1/2 = 0.5

recall = 1/2 = 0.5

F1 = (2 * precision * recall )/(precision + recall ) = 0.5

将上面三类进行求平均:

accuracy = 3/6 = 0.5

precision = (0.33+1+0.5)/3 = 0.61

recall = (0.5+0.5+0.5)/3 = 0.5

F1 = (0.4+0.67+0.5)/3 = 0.52

from sklearn.metrics import recall_score, f1_score, precision_score, accuracy_score
from sklearn.metrics import classification_report# [猫,狗,狗,鼠,猫,鼠]
y_true = [0, 1, 1, 2, 0, 2]
# [鼠,猫,狗,猫,猫,鼠]
y_pred = [2, 0, 1, 0, 0, 2]measure_result = classification_report(y_true, y_pred)
print('measure_result = \n', measure_result)print("accuracy:%.2f" % accuracy_score(y_true, y_pred))
print("precision:%.2f" % precision_score(y_true, y_pred, labels=[0, 1, 2], average='macro'))
print("recall:%.2f" % recall_score(y_true, y_pred, labels=[0, 1, 2], average='macro'))
print("f1-score:%.2f" % f1_score(y_true, y_pred, labels=[0, 1, 2], average='macro'))

深度学习(3):不同分类模型的评价指标(F1、Recall、P)相关推荐

  1. pytorch 训练过程acc_深度学习Pytorch实现分类模型

    今天将介绍深度学习中的分类模型,以下主要介绍Softmax的基本概念.神经网络模型.交叉熵损失函数.准确率以及Pytorch实现图像分类.01Softmax基本概念 在分类问题中,通常标签都为类别,可 ...

  2. Python基于深度学习多标签分类模型实现云状识别

    其实这个比赛早在19年的时候就结束,比赛名为<Understanding Clouds from Satellite Images>,原来的任务其实不仅要识别出来类型还要能够分割出来具体的 ...

  3. 综述:基于深度学习的文本分类 --《Deep Learning Based Text Classification: A Comprehensive Review》总结(一)

    文章目录 综述:基于深度学习的文本分类 <Deep Learning Based Text Classification: A Comprehensive Review>论文总结(一) 总 ...

  4. 深度学习在情感分类中的应用

    简介与背景 情感分类及其作用 情感分类是情感分析的重要组成部分,情感分类是针对文本的情感倾向进行极性分类,分类数量可以是二分类(积极或消极),也可以是多分类(按情感表达的不同程度),情感分析在影音评论 ...

  5. Datawhale NLP入门:Task5 基于深度学习的文本分类2

    Task5 基于深度学习的文本分类2 在上一章节,我们通过FastText快速实现了基于深度学习的文本分类模型,但是这个模型并不是最优的.在本章我们将继续深入. 基于深度学习的文本分类 本章将继续学习 ...

  6. Task5 基于深度学习的文本分类2

    Task5 基于深度学习的文本分类2 在上一章节,我们通过FastText快速实现了基于深度学习的文本分类模型,但是这个模型并不是最优的.在本章我们将继续深入. 基于深度学习的文本分类 本章将继续学习 ...

  7. Datawhale零基础入门NLP赛事 - Task5 基于深度学习的文本分类2

    在上一章节,我们通过FastText快速实现了基于深度学习的文本分类模型,但是这个模型并不是最优的.在本章我们将继续深入. 基于深度学习的文本分类 本章将继续学习基于深度学习的文本分类. 学习目标 学 ...

  8. 新闻文本分类--任务5 基于深度学习的文本分类2

    Task5 基于深度学习的文本分类2 在上一章节,我们通过FastText快速实现了基于深度学习的文本分类模型,但是这个模型并不是最优的.在本章我们将继续深入. 基于深度学习的文本分类 本章将继续学习 ...

  9. 万字总结Keras深度学习中文文本分类

    摘要:文章将详细讲解Keras实现经典的深度学习文本分类算法,包括LSTM.BiLSTM.BiLSTM+Attention和CNN.TextCNN. 本文分享自华为云社区<Keras深度学习中文 ...

  10. 【深度学习】常用的模型评估指标

    [深度学习]常用的模型评估指标 "没有测量,就没有科学."这是科学家门捷列夫的名言.在计算机科学中,特别是在机器学习的领域,对模型的测量和评估同样至关重要.只有选择与问题相匹配的评 ...

最新文章

  1. asp.net 页面中点击按钮后无反应的解决方法
  2. 离散事件模拟-银行管理
  3. 开源监控软件ganglia安装手册
  4. 通过History Trends Unlimited通过统计台式机Chrome浏览器Top10网页历史访问量(2021.11.23)
  5. 在线ocr文字识别_PandaOCR:最佳免费 OCR 文字识别工具
  6. 计算机怎么录制视频教程,怎么录制视频教程?查看电脑具体录屏方法
  7. centos7.1 postgresql10+postgis2.5离线安装
  8. Redis总结集群方式之主从复制
  9. 电子相册系统(七)查看原图
  10. java中map的使用和排序使用
  11. matlab 2017安装教程
  12. 如何快速批量新建文本文档(txt)?
  13. win11家庭版,如何进入海康摄像头web后台
  14. html flash mp3播放器,网页实用最简单的flash mp3播放器代码-多样式
  15. Microsoft Edge浏览器设置编码方式
  16. 国内搜索引擎技术现状 zZ
  17. 英语四六级考试系统+爬虫获取试题的系统(数据库设计)的开发思路
  18. 如何解决merge conflict的方法
  19. 光通量发光强度照度亮度关系_光通量、发光强度、照度单位的关系
  20. Mock.js和axios在vue-cli创建项目中的使用

热门文章

  1. 什么是实人认证?需要用到哪些api接口
  2. c语言printf函数中的格式控制字符串,C++_C语言格式化输入输出函数详解,一:格式输出函数printf() 1 - phpStudy...
  3. 如何写出更优雅的代码——编程范式简述
  4. IOCTL 获取网络信息(Ethtool工具)
  5. JAVA专业课题研究方向有哪些_教师课题研究方向与范围有哪些
  6. Domino管理中的一些小而有大用处的技巧
  7. VM是什么,干什么的
  8. CSDN 社区云 2022 年中小结
  9. 未来创业前景最好的十几个行业是哪些?
  10. 离职员工住房公积金提取办法(深圳)