precision与Recall

16 篇文章 0 订阅
7 篇文章 0 订阅

precision与Recall

在机器学习中,precision与recall是常用的指标,在说这两个概念之前,首先来说下精度(Precision)与准度(Accuracy)。
在这里插入图片描述

Precision指精度,意味着随机误差(Random Error)小,即方差(Variance)小,描述了实际值的扰动情况。
Accuracy指准度,意味着系统误差(System Error)小,即偏差(Bias)小,描述了实际值与真实结果的偏离程度。
准确度高,意味着误差(Error)小,Error = Bias + Variance

在机器学习中,可以将预测分为四种情况

True Positive(TP):预测为正实际为正,预测对了

False Negative(FN): 预测为负实际为正,预测错了

False Positive(FP): 预测为正实际为负,预测错了

True Negative(TN): 预测为负实际为负,预测对了

例如,有60个正样本,40个负样本,系统预测了50个正样本,其中40个是预测正确的正样本;预测了50个负样本,其中30个是预测正确的负样本。TP=40,FP=10;FN=20,TN=30。

在这里插入图片描述
定义:
在这里插入图片描述
可得上例中:

Precision(精确度) = 40/(40+10)=80%

Recall(召回率) = 40/(40+20)=66.7%;

Accuracy(准确度) = (40+30)/(40+10+30+20) = 70%

F1 Score = 240/(240+10+20) = 72.7%

由此可见:

Precision是预测为正实际为正占预测为正的比例,Precision可以视作是模型找出来的数据的正确能力,Precision=1表示模型找一个对一个,Presicion=0.5表示模型找出2个,能对1个。

Recall是预测为正实际为正占总体正样本的比例,Recall可以视作是模型在数据集中,检测出目标类型数据的能力,即是否把想找出来的都找出来了,Recall=1表示已经把想找出来的数据全部找出来了。

Accuracy是预测为正实际为正和预测为负实际负占总样本的比例。

参考博客:https://www.jianshu.com/p/fd9b1e89f983

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在PyTorch中,我们可以使用`torchvision`中的`detection`模块来计算SSD模型的精度和召回率。具体来说,我们需要使用`COCOEvaluator`类来评估模型在COCO数据集上的表现。 以下是使用`COCOEvaluator`类计算SSD模型精度和召回率的示例代码: ```python import torch import torchvision from torchvision.models.detection.ssd import SSDDetection from torchvision.models.detection import FastRCNNPredictor from torchvision.models.detection.rpn import AnchorGenerator from torchvision.models.detection.faster_rcnn import FastRCNNPredictor from torchvision.models.detection.backbone_utils import resnet_fpn_backbone from torchvision.models.detection import CocoEvaluator # Define the SSD model backbone = resnet_fpn_backbone('resnet50', pretrained=True) anchor_generator = AnchorGenerator(sizes=((32, 64, 128, 256, 512),), aspect_ratios=((0.5, 1.0, 2.0),)) roi_pooler = torchvision.ops.MultiScaleRoIAlign(featmap_names=['0', '1', '2', '3'], output_size=7, sampling_ratio=2) model = SSDDetection(backbone, num_classes=91, anchor_generator=anchor_generator, box_roi_pool=roi_pooler) # Load the trained weights model.load_state_dict(torch.load('ssd_model.pt', map_location=torch.device('cpu'))) # Define the COCO dataset dataset = torchvision.datasets.CocoDetection(root='/path/to/coco', annFile='/path/to/coco/annotations/instances_val2017.json', image_set='val', transforms=None) # Define the data loader data_loader = torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False, num_workers=4, collate_fn=torchvision.datasets.coco.collate_fn) # Define the COCO evaluator coco_evaluator = CocoEvaluator(dataset.coco, iou_types=['bbox'], use_fast_impl=True) # Evaluate the model on the dataset model.eval() for images, targets in data_loader: outputs = model(images) coco_evaluator.update(targets, outputs) # Calculate the precision and recall coco_evaluator.synchronize_between_processes() coco_evaluator.accumulate() coco_evaluator.summarize() ``` 在上面的代码中,我们首先定义了SSD模型,然后加载了训练好的权重。接着,我们定义了COCO数据集和数据加载器,并使用`CocoEvaluator`类在数据集上评估模型。最后,我们使用`coco_evaluator.summarize()`函数计算模型的精度和召回率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值