召回率(recall)和精度(precision)

识别精度主要是由召回率(recall)和精度(precision)表示的。通过绘制precision-recall 曲线,该曲线下方的面积越大,识别精度也就越高,反之越低。

在说明 recall 和 precision 计算公式之前需要先介绍几个数据定义。

在一个数据集检测中,会产生四类检测结果:
TP、TN 、FP 、FN:

T ——true 表示正确

F——false 表示错误

P—— positive 表示积极的,看成正例

N——negative 表示消极的,看成负例

我的理解:后面为预测结果,前面是预测结果的正确性。如:

T P—— 预测为 P (正例), 预测对了, 本来是正样本,检测为正样本(真阳性)。
T N—— 预测为 N (负例), 预测对了, 本来是负样本,检测为负样本(真阴性)。
F P—— 预测为 P (正例), 预测错了, 本来是负样本,检测为正样本(假阳性)。
F N—— 预测为 N (负例), 预测错了, 本来是正样本,检测为负样本(假阴性)。

TP+FP+TN+FN:样本总数。
TP+FN:实际正样本数。
TP+FP:预测结果为正样本的总数,包括预测正确的和错误的。
FP+TN:实际负样本数。
TN+FN:预测结果为负样本的总数,包括预测正确的和错误的

四种情形组成的混淆矩阵如下:
在这里插入图片描述

召回率(Recall):

表示的是样本中的正例有多少被预测正确了(找得全)所有正例中被正确预测出来的比例。

用途:用于评估检测器对所有待检测目标的检测覆盖率

针对数据集中的所有正例(TP+FN)而言,模型正确判断出的正例(TP)占数据集中所有正例的比例。FN表示被模型误认为是负例但实际是正例的数据,召回率也叫查全率,以物体检测为例,我们往往把图片中的物体作为正例,此时召回率高代表着模型可以找出图片中更多的物体
在这里插入图片描述

精确率(Precision):

表示的是预测为正的样本中有多少是真正的正样本(找得对)。预测结果中真正的正例的比例。

用途:用于评估检测器在检测成功基础上的正确率

针对模型判断出的所有正例(TP+FP)而言,其中真正例(TP)占的比例。精确率也叫查准率,还是以物体检测为例,精确率高表示模型检测出的物体中大部分确实是物体,只有少量不是物体的对象被当成物体

在这里插入图片描述
也就是说 recall 表示在整个检测结果中有用部分占整个数据集有用部分的比重,precision 表示在整个检测结果中有用部分占整个检测结果为有用的比重。虽然希望两个指标都能越高越好,但是这两个指标在被某些情况下存在着矛盾,所以在实际检测场景中需要根据自己的判断选择取舍或者绘制 precision-recall 曲线(简称PR曲线)帮助分析。

放一张较为经典理解上述公式的图:
在这里插入图片描述
还有一个指标:
准确率(Accuracy): 模型判断正确的数据(TP+TN)占总数据的比例
在这里插入图片描述
直观上说,我们用上述标准来衡量目标检测的好坏似乎已经够了。然而,目标检测问题中的模型的分类和定位都需要进行评估,每个图像都可能具有不同类别的不同目标,因此,在图像分类问题中所使用的标准度量不能直接应用于目标检测问题。

缺点:准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷。比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。所以,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。

在Java中,可以利用Apache POI库来实现在Excel文件中插入图片并导出功能。Apache POI是一个流行的用于处理Microsoft Office格式文档(如Word、ExcelPowerPoint)的API。以下是基本步骤: 1. 引入依赖:首先需要在项目中添加Apache POI的依赖,包括`poi`, `poi-ooxml`, `poi-ooxml-schemas`。 ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>最新版本号</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>最新版本号</version> </dependency> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>最新版本号</version> </dependency> ``` 2. 创建HSSFWorkbook对象:这是Excel的工作簿。 ```java HSSFWorkbook workbook = new HSSFWorkbook(); ``` 3. 添加Sheet:创建一个新的工作表。 ```java HSSFSheet sheet = workbook.createSheet("Sheet1"); ``` 4. 插入图片:找到一个ImageDataRecord对象来保存图片数据,然后将其添加到单元格。 ```java // 获取图片路径 File imageFile = new File("path_to_your_image.jpg"); // 将图片读取为字节流 InputStream inputStream = new FileInputStream(imageFile); byte[] imageData = IOUtils.toByteArray(inputStream); // 创建ImageDataRecord HSSFDataFormat format = workbook.createDataFormat(); // 图片数据格式 HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, 1, 1, 5, 5); // 定位图片位置 XSSFComment comment = sheet.createCellComment(new XSSFRichTextString("Your Image Comment")); // 注释 XSSFImage image = wb.addPicture(imageData, Workbook.PICTURE_TYPE_JPEG, anchor, comment); // 将图片插入到单元格 HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell(0); cell.setCellValue("Image Cell"); cell.setCellStyle(format.getCenteredStyle()); // 设置单元格样式 cell.setDrawingCell(true); // 标记为包含图像 cell.set Drawing(new XSSFDrawing(sheet)); cell.getDrawing().addAnchor(image); ``` 5. 保存文件:完成所有操作后,将工作簿保存到磁盘上。 ```java try { FileOutputStream outputStream = new FileOutputStream("output.xlsx"); workbook.write(outputStream); workbook.close(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值