开发者

python算法测试结果自动保存到excel表格的实现步骤

开发者 https://www.devze.com 2023-12-22 09:18 出处:网络 作者: Coding的叶子
目录前言1 python excel操作1.1 excel文件创建1.2 单元格赋值1.3 表格保存2 定义算法结果保存函数3 函数完整定义前言
目录
  • 前言
  • 1 python excel操作
    • 1.1 excel文件创建
    • 1.2 单元格赋值
    • 1.3 表格保存
  • 2 定义算法结果保存函数
    • 3 函数完整定义

      前言

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

      1 python excel操作

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

      pip install xlwt

      1.1 excel文件创建

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

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

      1.2 单元格赋值

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

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

      1.3 表格保存

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

      savepath = 'test.xls'
      myWorkbook.save(savepath)

      2 定义算法结果保存函数

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

      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 函数完整定义

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

      def write_result_to_excel(files, fps, fns, prs, lbs, savepath='res.xls'):
          myWorkbook = xlwt.Workbook(encoding = 'utf-8')
          mySheet = myWorkbook.add_sheet('Sheet1')js
          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='误检率(%)')
      wJLyIJlC    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)
          mphpySheet.write(i+4, 5, label=accuracy)
          myWorkbook.save(savepath)
          s = '目标标签个数wJLyIJlC:{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, jsresidual, precision, error, accuracy)
          print(s)

      以上就是python算法测试结果自动保存到excel表格的实现步骤的详细内容,更多关于python算法测试结果保存excel的资料请关注编程客栈(www.devze.com)其它相关文章!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号