“深入理解机器学习性能评估指标:TP、TN、FP、FN、精确率、召回率、准确率、F1-score和mAP”

目录

引言

分类标准

示例:癌症检测

1. 精确率(Precision)

2. 召回率(Recall)

3. 准确率(Accuracy)

4. F1-score

5. mAP(均值平均精度)

总结与通俗解释


引言

机器学习的核心目标之一是构建出具有良好性能的模型。为了评估模型的性能,我们依赖于一系列重要的指标。在本文中,我们将深入探讨这些指标,包括True Positive(TP)、True Negative(TN)、False Positive(FP)、False Negative(FN)、精确率、召回率、准确率、F1-score以及目标检测领域中常用的均值平均精度(mAP)

分类标准

示例:癌症检测

假设我们正在开发一个癌症检测模型,我们有12个患者样本,其中4个是患有癌症的正例8个是健康的负例

# 模型预测结果
predicted = [0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0]
# 实际标签
actual =    [0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0]
预测值=1 预测值=0

真实值=1

3(TP)

1(FP)

真实值=0 1(TN) 7(FN)
  • TP = 3(实际患病并被正确预测出来的数量)
  • FP = 1(实际健康但被错误预测为患病的数量)
  • TN = 1(实际患病但被错误预测为健康的数量)
  • FN = 7࿰
PyTorch本身不提供计算TPFPFNTN的函数,但可以使用numpy或其他库进行计算。下面给出一个使用numpy计算TPFPFNTN的示例代码: ```python import numpy as np # y_pred为预测结果,y_true为真实结果,threshold为分类阈值 def calculate_confusion_matrix(y_pred, y_true, threshold=0.5): y_pred = np.where(y_pred > threshold, 1, 0) # 根据阈值将预测结果转为0或1 tp = ((y_pred == 1) & (y_true == 1)).sum() # 计算TP fp = ((y_pred == 1) & (y_true == 0)).sum() # 计算FP fn = ((y_pred == 0) & (y_true == 1)).sum() # 计算FN tn = ((y_pred == 0) & (y_true == 0)).sum() # 计算TN return tp, fp, fn, tn ``` 其中,y_predy_true都是numpy数组,分别表示模型的预测结果真实结果。threshold是分类阈值,可以根据需要调整。函数返回TPFPFNTN四个值。使用时,可以将预测结果真实结果转为numpy数组后传入该函数,如下所示: ```python import torch # 创建一个大小为(2, 3)的模型输出结果Tensor y_pred = torch.tensor([[0.2, 0.5, 0.8], [0.1, 0.4, 0.9]]) # 创建一个大小为(2, 3)的真实结果Tensor y_true = torch.tensor([[0, 1, 1], [1, 0, 1]]) # 将Tensor转为numpy数组,并调用calculate_confusion_matrix函数计算混淆矩阵 tp, fp, fn, tn = calculate_confusion_matrix(y_pred.numpy(), y_true.numpy()) print("TP: {}, FP: {}, FN: {}, TN: {}".format(tp, fp, fn, tn)) ``` 输出结果为: ``` TP: 3, FP: 1, FN: 1, TN: 5 ``` 说明模型预测了3个正例,但其中有1个是错误的;有1个正例没有被预测出来;有5个负例被正确预测。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值