Precision,Recall,F1的计算
Precision又叫查准率,Recall又叫查全率。这两个指标共同衡量才能评价模型输出结果。
- TP: 预测为1(Positive),实际也为1(Truth-预测对了)
- TN: 预测为0(Negative),实际也为0(Truth-预测对了)
- FP: 预测为1(Positive),实际为0(False-预测错了)
- FN: 预测为0(Negative),实际为1(False-预测错了)
总的样本个数为:TP+TN+FP+FN。
Accuracy/Precision/Recall的定义
Accuracy = (预测正确的样本数)/(总样本数)=(TP+TN)/(TP+TN+FP+FN)
Precision = (预测为1且正确预测的样本数)/(所有预测为1的样本数) = TP/(TP+FP)
Recall = (预测为1且正确预测的样本数)/(所有真实情况为1的样本数) = TP/(TP+FN)
如何理解Precision/Recall
假设100癌症训练集中,只有1例为癌症。如果模型永远预测y=0,则模型的Precision=99/100,很高。但Recall=0/1=0,非常低。
所以单纯用Precision来评价模型是不完整的,评价模型时必须用Precision/Recall两个值。
如何理解F1
假设我们得到了模型的Precision/Recall如下
| Precision | Recall |
|---|---|
| Algorithm1 | 0.5 |
| Algorithm2 | 0.7 |
| Algorithm3 | 0.02 |
但由于Precision/Recall是两个值,无法根据两个值来对比模型的好坏。有没有一个值能综合Precision/Recall呢?有,它就是F1。
F1 = 2*(Precision*Recall)/(Precision+Recall)
| Algorithm | F1 |
|---|---|
| Algorithm1 | 0.444 |
| Algorithm2 | 0.175 |
| Algorithm3 | 0.039 |
只有一个值,就好做模型对比了,这里我们根据F1可以发现Algorithm1是三者中最优的。
分类阈值对Precision/Recall的影响
做二值分类时,我们认为,若h(x)>=0.5,则predict=1;若h(x)<0.5,则predict=0。这里0.5就是分类阈值。
增加阈值,我们会对预测值更有信心,即增加了查准率。但这样会降低查全率。(High Precision, Low Recall)
减小阈值,则模型放过的真例就变少,查全率就增加。(Low Precision, High Recall)
from sklearn.metrics import classification_report
y=[0,1,2,2,2]
y_=[0,0,2,2,1]
# sklearn.metrics.classification_report(y_true,y_pred,labels=None,target_names=None,sample_weight=None,digits=2)
# y_true,y_pred 1d array-like
# labels shape=[n_labels] label索引的列表,需要在report中包含的
# target_names 匹配label的可选的display的名字
# sample_weight shape=[n_sample] 可选的sample weights
# digits int 输出的浮点数的个数
# returns 返回每个类别的precision recall F1
target_names=['class 0','class 1','class 2']
print(classification_report(y,y_,target_names=tar
class 0 0.500 1.000 0.667 1
class 1 0.000 0.000 0.000 1
class 2 1.000 0.667 0.800 3 avg / total 0.700 0.600 0.613 5
Precision,Recall,F1的计算的更多相关文章
- 机器学习--如何理解Accuracy, Precision, Recall, F1 score
当我们在谈论一个模型好坏的时候,我们常常会听到准确率(Accuracy)这个词,我们也会听到"如何才能使模型的Accurcy更高".那么是不是准确率最高的模型就一定是最好的模型? 这篇博文会向大家解释 ...
- BERT模型在多类别文本分类时的precision, recall, f1值的计算
BERT预训练模型在诸多NLP任务中都取得最优的结果.在处理文本分类问题时,即可以直接用BERT模型作为文本分类的模型,也可以将BERT模型的最后层输出的结果作为word embedding导入到我们 ...
- 查准与召回(Precision & Recall)
Precision & Recall 先看下面这张图来理解了,后面再具体分析.下面用P代表Precision,R代表Recall 通俗的讲,Precision 就是检索出来的条目中(比如网页) ...
- TP Rate ,FP Rate, Precision, Recall, F-Measure, ROC Area,
TP Rate ,FP Rate, Precision, Recall, F-Measure, ROC Area, https://www.zhihu.com/question/30643044 T/ ...
- Classification week6: precision & recall 笔记
华盛顿大学 machine learning :classification 笔记 第6周 precision & recall 1.accuracy 局限性 我们习惯用 accuracy ...
- 机器学习:评价分类结果(Precision - Recall 的平衡、P - R 曲线)
一.Precision - Recall 的平衡 1)基础理论 调整阈值的大小,可以调节精准率和召回率的比重: 阈值:threshold,分类边界值,score > threshold 时分类为 ...
- 目标检测的评价标准mAP, Precision, Recall, Accuracy
目录 metrics 评价方法 TP , FP , TN , FN 概念 计算流程 Accuracy , Precision ,Recall Average Precision PR曲线 AP计算 A ...
- Handling skewed data---trading off precision& recall
preision与recall之间的权衡 依然是cancer prediction的例子,预测为cancer时,y=1;一般来说做为logistic regression我们是当hθ(x)>=0 ...
- 通过Precision/Recall判断分类结果偏差极大时算法的性能
当我们对某些问题进行分类时,真实结果的分布会有明显偏差. 例如对是否患癌症进行分类,testing set 中可能只有0.5%的人患了癌症. 此时如果直接数误分类数的话,那么一个每次都预测人没有癌症的 ...
随机推荐
- mysql的一些常用操作(二)
紧跟上一节,我们创建了四个表: Student.Teacher.Course.Score 接下来就是实际的一些操作了:1.求每门课程的学生人数. select course.cname '课程名称', ...
- 如何在vue里引入Bootstrap
一.引入jquery 步骤: 1. 安装jquery $ npm install jquery --save-dev 2.在webpack.config.js 添加内容 + const webpack ...
- Hibernate 查询方式、JPA查询方式
hibernate 查询方式: OID 查询 对象导航查询 HQL 方式查询 QBC方式查询 原生SQL方式查询 JPA 查询方式: OID 查询 对象导航查询 JPQL 方式查询 CriteriaB ...
- Python爬虫常用小技巧之设置代理IP
设置代理IP的原因 我们在使用Python爬虫爬取一个网站时,通常会频繁访问该网站.假如一个网站它会检测某一段时间某个IP的访问次数,如果访问次数过多,它会禁止你的访问.所以你可以设置一些代理服务器来 ...
- Web for pentester_writeup之Commands injection篇
Web for pentester_writeup之Commands injection篇 Commands injection(命令行注入) 代码注入和命令行注入有什么区别呢,代码注入涉及比较广泛, ...
- Dijkstra算法 笔记与思路整理
该文章可能存在硬伤与不妥,不能作为教程阅读.(因为我真的鶸 Dij作为单源最短路算法,需要先确定一个起点.Dij的函数主体为维护每个节点的dis和vis两个变量.dis表示该点距离起点的最短路权值和, ...
- Unity3-各个内置面板,对象说明
*在Inspector面板中,是表示每个物体(诸如摄像机,圆柱,正方体)的组件. 组件包含: 1.Transform,在第一节当中,可以用于变换物体的位置.每个物体对象都有. 2.cube,网格,对于 ...
- 学习笔记41_Spring.Net
Spring.Net:由容器负责创建对象,容器读取配置文件来初始化对象,配置文件须符合 Spring.Net范式: 准备材料: Common.Loggin.dll,Spring.Core.dll 第一 ...
- [考试反思]1002csp-s模拟测试56:凌乱
放假回来状态回升??(玩够了-但是稍困) T1打的不完全对,但是过掉了.很快的想到了二分吧喇叭啦.. 然后T2也挺快想出来了但是挂细节没发现,考试快结束的时候才发现出锅了. 改了过来是正解,但是出题人 ...
- 求矩阵最少(或最多)路径和(python实现)
1.递归方式 求最短,最终状态即右下角 f(v, i, j) = min(f(v, i - 1, j), f(v, i, j - 1)) + v[i][j] 最长只需将min改为max即可 impor ...