准确率,召回率

1、准确率与召回率(Precision & Recall

准确率召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率;召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率

一般来说,Precision就是检索出来的条目(比如:文档、网页等)有多少是准确的,Recall就是所有准确的条目有多少被检索出来了。

正确率、召回率和 F 值是在鱼龙混杂的环境中,选出目标的重要评价指标。不妨看看这些指标的定义先:

    1. 正确率 = 提取出的正确信息条数 /  提取出的信息条数     

    2. 召回率 = 提取出的正确信息条数 /  样本中的信息条数    

两者取值在01之间,数值越接近1,查准率或查全率就越高。   

    3. F  = 正确率 * 召回率 * 2 / (正确率 + 召回率) F 值即为正确率和召回率的调和平均值)

不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:

正确率 = 700 / (700 + 200 + 100) = 70%

召回率 = 700 / 1400 = 50%

F = 70% * 50% * 2 / (70% + 50%) = 58.3%

不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:

正确率 = 1400 / (1400 + 300 + 300) = 70%

召回率 = 1400 / 1400 = 100%

F = 70% * 100% * 2 / (70% + 100%) = 82.35%        

由此可见,正确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。

当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-Recall曲线来帮助分析。

2、综合评价指标(F-Measure

PR指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。

F-MeasurePrecisionRecall加权调和平均

当参数α=1时,就是最常见的F1,也即

可知F1综合了PR的结果,当F1较高时则能说明试验方法比较有效。

3E

E值表示查准率P和查全率R的加权平均值,当其中一个为0时,E值为1,其计算公式:

b越大,表示查准率的权重越大。

4、平均正确率(Average Precision, AP

平均正确率表示不同查全率的点上的正确率的平均。

 

 

 

 

### 计算准确率召回率 在Python中,可以利用`sklearn.metrics`模块下的函数轻松计算机器学习模型的准确率召回率。此方法不仅简化了开发流程还提高了准确性。 #### 使用Sklearn内置函数 为了方便快捷地获取混淆矩阵以及基于其上的各类评价指标,推荐使用`confusion_matrix()`函数来获得混淆矩阵,并通过`classification_report()`得到包括准确率、精确率、召回率在内的综合报告[^2]。 ```python from sklearn.metrics import confusion_matrix, classification_report # 假设y_true为真实标签列表,y_pred为预测结果列表 cm = confusion_matrix(y_true, y_pred) print("Confusion Matrix:") print(cm) cr = classification_report(y_true, y_pred) print("\nClassification Report:\n", cr) ``` 上述代码片段展示了如何调用这两个实用工具;其中`classification_report()`会自动生成一份详尽的文字报表,内含各个类别的精度(Precision),召回率(Recall)及F1得分等重要参数[^3]。 #### 手动实现计算逻辑 如果希望更深入理解具体数值是如何得出,则可以通过手动编写相应公式来进行验证: - 准确率(Accuracy): (TP + TN)/(TP + FP + FN + TN)[^1] - 召回率(Recall): TP/(TP + FN)[^4] 这里定义了一个简单的辅助函数用于展示这一过程: ```python def calculate_accuracy_recall(tp, fp, fn, tn): accuracy = (tp + tn) / (tp + fp + fn + tn) recall = tp / (tp + fn) return round(accuracy, 2), round(recall, 2) # 示例数据点 true_positive = 90 false_positive = 5 false_negative = 10 true_negative = 95 acc, rec = calculate_accuracy_recall(true_positive, false_positive, false_negative, true_negative) print(f'Accuracy: {acc}, Recall: {rec}') ``` 该段脚本实现了基本的准确性和回忆度量算法并返回四舍五入后的两位小数作为最终输出值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值