在机器学习领域中,用于评价一个模型的性能有多种指标,其中几项就是FP、FN、TP、TN、精确率(Precision)、召回率(Recall)、准确率(Accuracy)。这里我们就对这块内容做一个集中的理解。分为一和二,5分钟。

一、FP、FN、TP、TN

你这蠢货,是不是又把酸葡萄和葡萄酸弄“混淆“啦!!!

上面日常情况中的混淆就是:是否把某两件东西或者多件东西给弄混了,迷糊了。

在机器学习中, 混淆矩阵是一个误差矩阵, 常用来可视化地评估监督学习算法的性能.。混淆矩阵大小为 (n_classes, n_classes) 的方阵, 其中 n_classes 表示类的数量。

其中,这个矩阵的一行表示预测类中的实例(可以理解为模型预测输出,predict),另一列表示对该预测结果与标签(Ground Truth)进行判定模型的预测结果是否正确,正确为True,反之为False。

在机器学习中ground truth表示有监督学习的训练集的分类准确性,用于证明或者推翻某个假设。有监督的机器学习会对训练数据打标记,试想一下如果训练标记错误,那么将会对测试数据的预测产生影响,因此这里将那些正确打标记的数据成为ground truth。

此时,就引入FP、FN、TP、TN与精确率(Precision),召回率(Recall),准确率(Accuracy)。

以猫狗二分类为例,假定cat为正例-Positive,dog为负例-Negative;预测正确为True,反之为False。我们就可以得到下面这样一个表示FP、FN、TP、TN的表:

此时如下代码所示,其中scikit-learn 混淆矩阵函数 sklearn.metrics.confusion_matrix API 接口,可以用于绘制混淆矩阵

  1. skearn.metrics.confusion_matrix(
  2. y_true,   # array, Gound true (correct) target values
  3. y_pred,  # array, Estimated targets as returned by a classifier
  4. labels=None,  # array, List of labels to index the matrix.
  5. sample_weight=None  # array-like of shape = [n_samples], Optional sample weights
  6. )

完整示例代码如下:

  1. import seaborn as sns
  2. from sklearn.metrics import confusion_matrix
  3. import matplotlib.pyplot as plt
  4. sns.set()
  5. f, (ax1,ax2) = plt.subplots(figsize = (10, 8),nrows=2)
  6. y_true = ["dog", "dog", "dog", "cat", "cat", "cat", "cat"]
  7. y_pred = ["cat", "cat", "dog", "cat", "cat", "cat", "cat"]
  8. C2= confusion_matrix(y_true, y_pred, labels=["dog", "cat"])
  9. print(C2)
  10. print(C2.ravel())
  11. sns.heatmap(C2,annot=True)
  12. ax2.set_title('sns_heatmap_confusion_matrix')
  13. ax2.set_xlabel('Pred')
  14. ax2.set_ylabel('True')
  15. f.savefig('sns_heatmap_confusion_matrix.jpg', bbox_inches='tight')

保存的图像如下所示:

这个时候我们还是不知道skearn.metrics.confusion_matrix做了些什么,这个时候print(C2),打印看下C2究竟里面包含着什么。最终的打印结果如下所示:

  1. [[1 2]
  2. [0 4]]
  3. [1 2 0 4]

解释下上面这几个数字的意思:

  1. C2= confusion_matrix(y_true, y_pred, labels=["dog", "cat"])中的labels的顺序就分布是0、1,negative和positive
  2. 注:labels=[]可加可不加,不加情况下会自动识别,自己定义
  • cat为1-positive,其中真实值中cat有4个,4个被预测为cat,预测正确T,0个被预测为dog,预测错误F;

  • dog为0-negative,其中真实值中dog有3个,1个被预测为dog,预测正确T,2个被预测为cat,预测错误F。

所以:TN=1、 FP=2 、FN=0、TP=4。

  • TN=1:预测为negative狗中1个被预测正确了

  • FP=2 :预测为positive猫中2个被预测错误了

  • FN=0:预测为negative狗中0个被预测错误了

  • TP=4:预测为positive猫中4个被预测正确了

这时候再把上面猫狗预测结果拿来看看,6个被预测为cat,但是只有4个的true是cat,此时就和右侧的红圈对应上了。

  1. y_pred = ["cat", "cat", "dog", "cat", "cat", "cat", "cat"]
  2. y_true = ["dog", "dog", "dog", "cat", "cat", "cat", "cat"]

二、精确率(Precision)、召回率(Recall)、准确率(Accuracy)

有了上面的这些数值,就可以进行如下的计算工作了

准确率(Accuracy):这三个指标里最直观的就是准确率: 模型判断正确的数据(TP+TN)占总数据的比例

"Accuracy: "+str(round((tp+tn)/(tp+fp+fn+tn), 3))

召回率(Recall):针对数据集中的所有正例(TP+FN)而言,模型正确判断出的正例(TP)占数据集中所有正例的比例.FN表示被模型误认为是负例但实际是正例的数据.召回率也叫查全率,以物体检测为例,我们往往把图片中的物体作为正例,此时召回率高代表着模型可以找出图片中更多的物体!

"Recall: "+str(round((tp)/(tp+fn), 3))

精确率(Precision):针对模型判断出的所有正例(TP+FP)而言,其中真正例(TP)占的比例.精确率也叫查准率,还是以物体检测为例,精确率高表示模型检测出的物体中大部分确实是物体,只有少量不是物体的对象被当成物体

"Precision: "+str(round((tp)/(tp+fp), 3))

还有一些别的度量方式,如下,自行学习,不做扩展

  1. ("Sensitivity: "+str(round(tp/(tp+fn+0.01), 3)))
  2. ("Specificity: "+str(round(1-(fp/(fp+tn+0.01)), 3)))
  3. ("False positive rate: "+str(round(fp/(fp+tn+0.01), 3)))
  4. ("Positive predictive value: "+str(round(tp/(tp+fp+0.01), 3)))
  5. ("Negative predictive value: "+str(round(tn/(fn+tn+0.01), 3)))

推荐阅读:(点击下方标题即可跳转)

为什么要考985?

受用一生的高效PyCharm使用技巧

没看完这11 条,别说你精通 Python 装饰器

FP、FN、TP、TN、精确率(Precision)、召回率(Recall)、准确率(Accuracy)是什么意思相关推荐

  1. python垃圾分类准确率计算公式_准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure...

    机器学习(ML),自然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的 工作,而其评价指标往往有如下几点:准确率(Accuracy),精确率(Precision), ...

  2. 【机器学习】准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure

    在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型的效果做评价. 业内目前常常采用的评价指标有准确率(Precision).召回率(Recall).F值(F-Measure)等,下图是不同机器学习 ...

  3. 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure(对于二分类问题)

    首先我们可以计算准确率(accuracy),其定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比.也就是损失函数是0-1损失时测试数据集上的准确率. 下面在介绍时使用一下例子: 一个 ...

  4. 准确率、精确率、召回率、F1-measure简单总结

    - 相关(Relevant),正类 无关(NonRelevant),负类 被检索到(Retrieved) true positives(TP 正类判定为正类) false positives(FP 负 ...

  5. 机器学习——二分类、多分类的精确率和召回率

    机器学习有很多评估的指标.有了这些指标我们就横向的比较哪些模型的表现更好.我们先从整体上来看看主流的评估指标都有哪些: 分类问题评估指标: 准确率 – Accuracy 精确率(差准率)- Preci ...

  6. 准确率、精确率、召回率、F1-measure

    文章目录 准确率(Accuracy) 精确率(precision) 召回率(recall) F1-measure值 学习理解网站 - p'(Predicted) n'(Predicted) p(Act ...

  7. 准确率、精确率、召回率、F1(F-Measure)都是什么?

    机器学习ML.自然语言处理NLP.信息检索IR等领域,评估(Evaluation)是一个必要的工作,而其评论价值指标往往有如下几点: 准确率 Accuracy; 精准率 Precision; 召回率 ...

  8. auc计算公式_图解机器学习的准确率、精准率、召回率、F1、ROC曲线、AUC曲线

    机器学习模型需要有量化的评估指标来评估哪些模型的效果更好. 本文将用通俗易懂的方式讲解分类问题的混淆矩阵和各种评估指标的计算公式.将要给大家介绍的评估指标有:准确率.精准率.召回率.F1.ROC曲线. ...

  9. 简单理解 TP、FN、FT 及 TN和准确率、精确率、召回率 的含义

    在机器学习或是其他地方,经常会看到TP.FN.FT 和  TN这几个字符,那到底是什么意思呢? 简单来讲其实就是预测结果的两种情况(正确和错误)和真实结果的两种情况(正的和负的)的两两组合,2*2=4 ...

  10. 机器学习面试题集-图解准确率,精确率,召回率

    https://www.toutiao.com/a6692359723615781389/ 今天进入第二章:模型评估 1. 什么是模型评估 模型训练后要对其进行评估,看模型表现如何,哪里可以改进 分类 ...

最新文章

  1. 图像超分辨率网络:RCAN
  2. python装饰器实例-python装饰器使用实例详解
  3. Python自省(反射)指南
  4. Java不确定参数个数的函数方法,实现求多个数最小值
  5. JavaScript对SEO的影响及解决之道
  6. ThinkPHP3.2.3快速入门 · 看云
  7. matlab案例_基于matlab和frost平台的cassie案例足式机器人运动学和动力学计算实现过程...
  8. 【安全牛学习笔记】抓包嗅探
  9. 编写asp.net程序,当编译调试比较频繁的时候,很容易经常地出现访问被拒绝
  10. 解决cacti创建ping主机时不出图的问题
  11. 12.GitLab System Hooks
  12. error: statement with no effect [-Werror=unused-value]
  13. 小巧的KML文件生成工具KML Generator
  14. 显示器性能测试软件,MonitorTest(显示器性能测试软件) V4.0.1001 官方版
  15. 图解: 线程状态转换(线程生命周期这一篇够用了)
  16. Oracle function语法
  17. 什么叫做云计算?云计算基础学习路线
  18. 彻底删除微软拼音输入法
  19. 网易2019实习生招聘编程题
  20. 【宇麦科技】腾xun云登场,群晖NAS自定义域名教程来啦~

热门文章

  1. HCIP第九天笔记(OSPF的路由回馈、路由策略、以及配置指南)
  2. 技术人员如何做晋升答辩
  3. 年轻人宣言:青春符号
  4. php调用sqlmapapi.py,SQL注入 SqlmapApi快速上手
  5. mysql模糊查找英文可以查找中文不行(详细记录)
  6. 利用c语言编写一个时钟计时器(c语言基础练习)
  7. Document-Level Relation Extraction with Adaptive Thresholding and Localized Context Pooling 阅读笔记
  8. 厉害!23岁本科生发14篇SCI论文,并任外审专家……
  9. 计算机桌面底下显示条,详细教您电脑屏幕出现条纹怎么办
  10. 努比亚 Z5 mini刷机包 omni4.4.2改动V4.0 自用版 精简 MIUI特效