python 算法测试结果自动保存到excel表格

news/2024/7/21 7:30:31 标签: python excel, excel, 算法测试, 自动保存, python

        我们在进行算法评估是通常会针对每个样本的算法处理结果进行统计,例如每个样本正确预测数量、漏检数量和误检数量、精度等。特别是,算法验证是比较关注错误识别的样本,把每个样本的预测结果写入excel表格,可以进行快速筛查和定位,并且结果更加直观。

1 python excel>python excel操作

        这里会将算法结果保存成.xls格式的excel文件,所需的python库为xlwt。如果没有xlwt库,请使用pip进行安装。

pip install xlwt

  1.1 excel文件创建

        excel文件创建分为两步,第一步是定义表格的编码方式,第二步是为表格创建表单。

python">myWorkbook = xlwt.Workbook(encoding = 'utf-8')
mySheet = myWorkbook.add_sheet('Sheet1')

1.2 单元格赋值

        单元格赋值的方式是采用write函数,第一个参数表示第row+1行,row=0表示第一行。第二个参数表示第col+1列,col=0表示第1列。参数label是要写入单元格的内容。

python">mySheet.write(row, col, label='测试')

1.3 表格保存

        表格保存的文件后缀为.xls。

python">savepath = 'test.xls'
myWorkbook.save(savepath)

2 定义算法结果保存函数

        函数名称为write_result_to_excel,定义如下。

python">def write_result_to_excel(files, fps, fns, prs, lbs, savepath='res.xls')

        files:list,每个元素为样本名称字符串。

        fps:list,每个元素为样本中误检目标数量。

        fns:list,每个元素为样本中漏检目标数量。

        prs:list,每个元素为样本中算法预测目标数量。

         lbs:list,每个元素为样本中真实标签目标数量。

        savepath:excel表格保存路径。

3 函数完整定义

        可以根据自身需要对函数进行更改。

python">def write_result_to_excel(files, fps, fns, prs, lbs, savepath='res.xls'):
    myWorkbook = xlwt.Workbook(encoding = 'utf-8')
    mySheet = myWorkbook.add_sheet('Sheet1')
    mySheet.write(0, 0, label='样本名称')
    mySheet.write(0, 1, label='目标标签个数')
    mySheet.write(0, 2, label='预测标签个数')
    mySheet.write(0, 3, label='正确预测个数')
    mySheet.write(0, 4, label='错误预测个数')
    mySheet.write(0, 5, label='漏检目标个数')
    for i in range(len(files)):
        mySheet.write(i+1, 0, label=files[i])
        mySheet.write(i+1, 1, label=lbs[i])
        mySheet.write(i+1, 2, label=prs[i])
        mySheet.write(i+1, 3, label=lbs[i]-fns[i])
        mySheet.write(i+1, 4, label=fps[i])
        mySheet.write(i+1, 5, label=fns[i]) 
   
    fp = sum(fps)
    fn = sum(fns)
    pr = sum(prs)
    lb = sum(lbs)

    residual  = fn / lb * 100
    recall    = 100 - residual
    error     = fp / pr * 100
    precision = 100 - error
    accuracy  = recall * precision / 100
    mySheet.write(i+2, 0, label='总计')
    mySheet.write(i+2, 1, label=lb)
    mySheet.write(i+2, 2, label=pr)
    mySheet.write(i+2, 3, label=lb-fn)
    mySheet.write(i+2, 4, label=fp)
    mySheet.write(i+2, 5, label=fn)

    mySheet.write(i+3, 1, label='检出率(%)')
    mySheet.write(i+3, 2, label='漏检率(%)')
    mySheet.write(i+3, 3, label='准确率(%)')
    mySheet.write(i+3, 4, label='误检率(%)')
    mySheet.write(i+3, 5, label='精度(%)')

    mySheet.write(i+4, 1, label=recall)
    mySheet.write(i+4, 2, label=residual)
    mySheet.write(i+4, 3, label=precision)
    mySheet.write(i+4, 4, label=error)
    mySheet.write(i+4, 5, label=accuracy)
    myWorkbook.save(savepath)
    s = '目标标签个数:{0}\n预测标签个数:{1}\n正确预测个数:{2}\n错误预测个数:{3}\n漏检目标个数:{4}\n'.format(lb, pr, lb-fn, fp, fn)
    s += '检出率recall:{0}\n漏检率residual:{1}\n准确率precision:{2}\n误检率error:{3}\n精度accuracy:{4}'.format(recall, residual, precision, error, accuracy)
    print(s)

4 【python三维深度学习】python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_三维点云深度学习

更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。


http://www.niftyadmin.cn/n/1257510.html

相关文章

使用 select 实现 goroutine 超时

虽然携程是Go语言中一个新的概念,嗯,但它本质上依然是属于多线程。超时机制是多线程中是一个非常重要的保障程序的鲁棒性的一个措施;错误是很难预估的,在多线程中更为显著,更容易出现难以预料的错误。 一个异常场景在g…

【三维目标检测】Second 模型 (一)

Second算法是一种基于三维点云的目标检测算法。Second算法采用了几乎与Voxelnet三维目标检测算法完全一致的设计思路,主要差异表现在将Voxelnet CML(Convolutional Middle Layer)卷积提取特征层改为采用三维稀疏卷积进行特征提取。因此&#…

labelme标注结果可视化(持续补充)

图像数据常用的标注工具是labelme,标注的格式是json。labelme标注结果可视化,是将标注结果绘制到原始图像上,以方便查看标注结果。 1 json文件读取与保存 由于labelme标注的保存格式为json,所以必须掌握json文件的读取与保存。 …

【三维目标检测】Second 模型 (二)

Second模型的基本介绍、稀疏卷积、mini kitti数据集等请参考本专栏的上一篇博文:【三维目标检测】Second 模型 (一)_Coding的叶子的博客-CSDN博客。本节将介绍模型的详细结构与推理过程。文中参考代码来源于mmdetection3d框架中的second模型。…

【三维目标检测】Pointpillars(一)

PointPillars是一种基于体素的三维目标检测算法,发表在CVPR2019《PointPillars: Fast Encoders for Object Detection from Point Clouds》。它的主要思想是把三维点云转换成2D伪图像以便用2D目标检测的方式进行目标检测。PointPillars在配置为Intel i7 CPU和1080ti…

【三维目标检测】Pointpillars(二)

数据和源码请参考上一篇博文:【三维目标检测】Pointpillars(一)_Coding的叶子的博客-CSDN博客。 PointPillars是一种基于体素的三维目标检测算法,发表在CVPR2019《PointPillars: Fast Encoders for Object Detection from Point C…

【三维目标检测】3DSSD(一)

3DSSD三维目标检测模型发表在CVPR2020《3DSSD: Point-based 3D Single Stage Object Detector》。目前,基于体素的 3D 单级检测器已经有很多种,而基于点的单级检测方法仍处于探索阶段。3DSSD是一种轻量级且有效的基于点的 3D 单级目标检测器,…

【三维目标检测】3DSSD(二)

数据和源码请参考上一篇博文:【三维目标检测】3DSSD(一)_Coding的叶子的博客-CSDN博客。 3DSSD三维目标检测模型发表在CVPR2020《3DSSD: Point-based 3D Single Stage Object Detector》。目前,基于体素的 3D 单级检测器已经有很多…