Record_05:准确率(Accuracy)_精确率(Precision)_召回率(Recall)_漏报率_误报率

@Record_05_准确率(Accuracy)_精确率(Precision)_召回率(Recall)_漏报率_误报率
折腾了这么久,跟别人探讨了,自学了这么久,还是要来写一下这个博客,对自己是一种记录,希望这种记录对你有用。

混淆矩阵

不怎容易弄明白的矩阵,所以叫混淆矩阵,很多人混淆可能是看表格的方向不知道,按照下面说的,再看看能不能明白。

原始标签检测成正样本检测成负样本
标签:正样本TPFN
标签:负样本FPTN

这个表格:

第2行从左往右看:

原来样本标签是正样本,通过模型后,模型检测该样本为正样本,是为真阳,TP,True Positive

原来样本标签是正样本,通过模型后,模型检测该样本为负样本,是为假阴,FN,False Negative

第3行从左往右看:

原来样本标签是负样本,通过模型后,模型检测该样本为正样本,是为假阳,FP,False Positive

原来样本标签是负样本,通过模型后,模型检测该样本为负样本,是为真阴,TN,True Negative

对于分类问题,我们关注的是正样本到底检测没检测出来。所以正,是,阳;负,是,阴。

由混淆矩阵,可以得到下面公式:

准确率_Accuracy 计算公式:

A C C = T P + T N T P + F N + F P + T N ACC=\frac{TP+TN}{TP+FN+FP+TN} ACC=TP+FN+FP+TNTP+TN

精确率_Precision 计算公式:

P r e c i s i o n = T P T P + F P Precision =\frac{TP}{TP+FP} Precision=TP+FPTP

召回率_Recall 计算公式:

R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP

误报率计算公式:

F N R = F N T P + F N = 1 − P r e c i s i o n FNR = \frac{FN}{TP+FN}=1-Precision FNR=TP+FNFN=1Precision

漏报率计算公式:

F P R = F P T P + F P = 1 − R e c a l l FPR = \frac{FP}{TP+FP}=1-Recall FPR=TP+FPFP=1Recall

以下补充内容,仅供参考!不负法律责任!

下面补充是我自己的理解,你觉得能帮助你理解就行,你要是大牛看不惯,可以忽略。

漏报:

漏报的含义是:原来标签是正样本,模型如果检测它是正样本,那么应该报警。

比如吸烟分类,吸烟是正样本,不吸烟的其他所有都是负样本。

模型在检测时,如果检测到吸烟,就要报警:请勿吸烟!

这就是报警,报警报告的是正样本。

原来是正样本,结果模型没检测出来它是吸烟样本,就是漏报。

漏报率计算公式:

F N T P + F N \frac{FN}{TP+FN} TP+FNFN

也就是:

1 − R e c a l l = 1 − T P T P + F N = F N T P + F N 1-Recall=1-\frac{TP}{TP+FN}=\frac{FN}{TP+FN} 1Recall=1TP+FNTP=TP+FNFN

误报:

误报的含义是:原来标签是负样本,模型如果检测它是正样本,也是报警,只不过是误报。

比如吸烟分类,吸烟是正样本,不吸烟的其他所有都是负样本。

如果司机吃苹果,模型检测司机吃苹果是吸烟,就是误报。

原来是负样本,结果模型检测出来它是吸烟样本,就是误报。

误报率计算公式:

但是,很多人要把这些公司在python代码中实现出来,用FNR,FPR表达出来的含义在网上一搜好多版本,以下是我的理解。不喜忽略!不负法律责任!

FNR,是False Negative Rate的英文简写,有两个表达式:

F N R p o s i t i v e = F N T P + F N FNR_{positive} = \frac{FN}{TP+FN} FNRpositive=TP+FNFN
F N R n e g t i v e = F N T N + F N FNR_{negtive} = \frac{FN}{TN+FN} FNRnegtive=TN+FNFN

通常默认FNR_positive为漏报率,即漏报率默认是FNR表示,即漏报率:

F N R = F N T P + F N FNR = \frac{FN}{TP+FN} FNR=TP+FNFN

FPR,是False Positive Rate的英文简写,也是两个表达式:

FPR却是有两个公式,我标记成如下:

F P R p o s i t i v e = F P T P + F P FPR_{positive} = \frac{FP}{TP+FP} FPRpositive=TP+FPFP
F P R n e g t i v e = F P T N + F P FPR_{negtive} = \frac{FP}{TN+FP} FPRnegtive=TN+FPFP

通常默认FPR_positive为漏报率,即误报率默认是FPR表示,即误报率:

F P R = F P T P + F P FPR = \frac{FP}{TP+FP} FPR=TP+FPFP

文章最后有微信公众号:惟CPP,欢迎关注,一起交流学习进步~

YOLOv8(You Only Look Once Version 8)是一个先进的目标检测算法,它评估指标主要包括准确率精确召回率和F1分数(也称为F1-measure)。这里简要解释一下: 1. **准确率Accuracy)**: 表示模型预测正确的样本数占总样本数的比例。即 TP + TN / (TP + TN + FP + FN),其中 TP(True Positive)是真正例,TN(True Negative)是真负例,FP(False Positive)是假正例,FN(False Negative)是假负例。 2. **精确Precision)**: 也称作精度,衡量的是模型预测为正类别的样本中有多少是真正的正类别。即 TP / (TP + FP)。 3. **召回率Recall)**: 又叫查准,表示实际为正例的样本中,模型正确识别出来的比例。即 TP / (TP + FN)。 4. **F1-Measure** 或 F1 Score:精确召回率的调和平均值,综合考虑了两者。公式为 2 * Precision * Recall / (Precision + Recall)。当模型希望既减少误报(高精确)又减少漏报(高召回率)时,F1分数是个好选择。 在YOLOv8中,通常会通过训练过程中的验证集或测试集计算这些指标,以便优化模型性能。在Python的`sklearn.metrics`库中可以找到计算这些指标的方法,例如`accuracy_score`, `precision_score`, 和 `recall_score`。以下是一个简单的例子,展示如何使用这些函数: ```python from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # 假设我们有真实标签(y_true)和预测结果(y_pred) y_true = [...] y_pred = [...] # 计算准确率 accuracy = accuracy_score(y_true, y_pred) # 精确 precision = precision_score(y_true, y_pred, average='weighted') # 'weighted'适用于不平衡数据 # 召回率 recall = recall_score(y_true, y_pred, average='weighted') # F1分数 f1_measure = f1_score(y_true, y_pred, average='weighted') print(f"Accuracy: {accuracy}") print(f"Precision: {precision}") print(f"Recall: {recall}") print(f"F1 Measure: {f1_measure}") ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值