来自微信公众号:小白CV关注可了解更多CV,ML,DL领域基础/最新知识;如果你觉得小白CV对您有帮助,欢迎点赞/收藏/转发

在机器学习领域中,用于评价一个模型的性能有多种指标,其中几项就是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 接口,可以用于绘制混淆矩阵

skearn.metrics.confusion_matrix(y_true,   # array, Gound true (correct) target valuesy_pred,  # array, Estimated targets as returned by a classifierlabels=None,  # array, List of labels to index the matrix.sample_weight=None  # array-like of shape = [n_samples], Optional sample weights
)

完整示例代码如下:

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

保存的图像如下所示:

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

[[1 2][0 4]]
[1 2 0 4]

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

C2= confusion_matrix(y_true, y_pred, labels=["dog", "cat"])中的labels的顺序就分布是0、1,negative和positive注: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,此时就和右侧的红圈对应上了。

y_pred = ["cat", "cat", "dog", "cat", "cat", "cat", "cat"]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))

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

("Sensitivity: "+str(round(tp/(tp+fn+0.01), 3)))
("Specificity: "+str(round(1-(fp/(fp+tn+0.01)), 3)))
("False positive rate: "+str(round(fp/(fp+tn+0.01), 3)))
("Positive predictive value: "+str(round(tp/(tp+fp+0.01), 3)))
("Negative predictive value: "+str(round(tn/(fn+tn+0.01), 3)))
文本转载自公众号:小白算法,作者Q.IAN。小白算法专注于学生和初从业者零碎时间充电,涉及基础算法、计算机视觉(CV)、人工智能(AI)图像领域。包含Opencv、C++、Python、TensorFlow、Keras语言库框架等。只关注技术,做人人都能懂的知识公众平台。

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

为什么要考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 ...

最新文章

  1. R语言广义线性模型泊松回归(Poisson Regression)模型
  2. P1203 [USACO1.1]坏掉的项链Broken Necklace
  3. UIKIT网页基本结构学习
  4. python os模块system_Python如何使用OS模块调用cmd
  5. myeclipse优化
  6. wireshark抓包详解
  7. 使用remix和matemask部署智能合约到以太坊测试网络
  8. 一年中最后一个月的最后一天说说_新的一年又开始了说说 年底最后一天的心情说说...
  9. 手写文字识别java_java 手写文字图片识别提取 百度API
  10. 关于 V C++ 中 Error 6 fatal error C1075的解决办法
  11. Linux 获取屏幕分辨率与窗口行列数(c/c++)
  12. php迭代器实例,PHP迭代器和生成器用法实例分析
  13. 洛谷——P3225 [HNOI2012]矿场搭建
  14. linux记录iptables日志,linux – 如何配置syslog.conf文件,在单独的文件中记录iptables消息?...
  15. docker安装qq
  16. 如何计算机画函数图形,Excel中怎么绘制出好看的函数图像
  17. Set集合:求交集、并集和差集
  18. 推荐几个2021年App数据统计平台,分析数据运营必备工具
  19. 休闲一下---沙雕朋友圈的日常
  20. Linux aarch64 编译 qemu 搭建实验平台

热门文章

  1. swoole的安装(已经做测试成功)
  2. android 上线apk,码云 Android apk 在线构建功能上线啦!
  3. java http2_java的okhttp3库中,客户端如何开启http2协议支持
  4. VirtualBox虚拟机Ubuntu设置共享文件夹
  5. PHP二维数组去除重复值
  6. 微信小程序开发打开另一个小程序的实现方法
  7. python网络通信协议_Python网络概述:协议与体系结构的运用
  8. PHP中一些可用的方法
  9. strtotime()加半个小时_炖羊肉,必须加这4种料,缺一味就不香!很多人做错,难怪不好吃...
  10. python中set函数是什么数据类型_阿博Python之路-详解Set数据类型