精确率(Precision)、召回率(Recall)与F1值

衡量二分类器的评价指标除准确率外,还有精确率、召回率和 F1 值。精确率指预测为正的样本中真正正样本的比例,召回率指样本中正例被正确预测的比例,F1 值用于调和二者,P 与 R 高时,F1 值也高。

衡量二分类器的评价指标除了准确率(Accuracy)外,还有精确率(Precision)、召回率(Recall)、F1 值等。

精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP),也就是

Precision

召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。

Recall

一般在垃圾邮件识别的领域比较关注精确率,而在医疗等领域比较关注召回率。

此外 F1 值常用来调和二者,即


P 与 R 高时,F1 值也会高。

图片来自知乎用户 Charles Xiao

转自[(https://www.jianshu.com/p/1ff25054930b)
### 精确召回率F1的定义计算 #### 精确 (Precision) 精确衡量的是模型预测为正类的结果中有多少是真正的正类。其公式如下: \[ \text{Precision} = \frac{\text{True Positives (TP)}}{\text{True Positives (TP)} + \text{False Positives (FP)}} \] 其中,`True Positives (TP)` 表示实际为正类且被正确预测为正类的数量,`False Positives (FP)` 表示实际为负类却被错误预测为正类的数量[^3]。 #### 召回率 (Recall) 召回率衡量的是所有实际为正类的数据中,有多少比例被成功识别出来。其公式如下: \[ \text{Recall} = \frac{\text{True Positives (TP)}}{\text{True Positives (TP)} + \text{False Negatives (FN)}} \] 这里 `False Negatives (FN)` 是指实际为正类但却被错误预测为负类的数量[^3]。 #### F1 (F1 Score) F1精确召回率的调和平均数,用于综合评估两者之间的平衡情况。它的计算公式为: \[ \text{F1 Value} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} \] F1范围在0到1之间,数越高说明模型在这两个指标上的表现越佳[^1]。 以下是实现这些公式的Python代码示例: ```python def calculate_precision(tp, fp): """ 计算精确 """ try: precision = tp / (tp + fp) except ZeroDivisionError: precision = 0 return precision def calculate_recall(tp, fn): """ 计算召回率 """ try: recall = tp / (tp + fn) except ZeroDivisionError: recall = 0 return recall def calculate_f1(precision, recall): """ 计算F1 """ try: f1_value = 2 * ((precision * recall) / (precision + recall)) except ZeroDivisionError: f1_value = 0 return f1_value # 示例数据 true_positives = 90 false_positives = 10 false_negatives = 5 # 调用函数并打印结果 precision_result = calculate_precision(true_positives, false_positives) recall_result = calculate_recall(true_positives, false_negatives) f1_score_result = calculate_f1(precision_result, recall_result) print(f"Precision: {precision_result:.2f}") print(f"Recall: {recall_result:.2f}") print(f"F1-Score: {f1_score_result:.2f}") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值