python算法測試結(jié)果自動保存到excel表格的實(shí)現(xiàn)步驟
前言
我們在進(jìn)行算法評估是通常會針對每個(gè)樣本的算法處理結(jié)果進(jìn)行統(tǒng)計(jì),例如每個(gè)樣本正確預(yù)測數(shù)量、漏檢數(shù)量和誤檢數(shù)量、精度等。特別是,算法驗(yàn)證是比較關(guān)注錯(cuò)誤識別的樣本,把每個(gè)樣本的預(yù)測結(jié)果寫入excel表格,可以進(jìn)行快速篩查和定位,并且結(jié)果更加直觀。
1 python excel操作
這里會將算法結(jié)果保存成.xls格式的excel文件,所需的python庫為xlwt。如果沒有xlwt庫,請使用pip進(jìn)行安裝。
pip install xlwt
1.1 excel文件創(chuàng)建
excel文件創(chuàng)建分為兩步,第一步是定義表格的編碼方式,第二步是為表格創(chuàng)建表單。
myWorkbook = xlwt.Workbook(encoding = 'utf-8') mySheet = myWorkbook.add_sheet('Sheet1')
1.2 單元格賦值
單元格賦值的方式是采用write函數(shù),第一個(gè)參數(shù)表示第row+1行,row=0表示第一行。第二個(gè)參數(shù)表示第col+1列,col=0表示第1列。參數(shù)label是要寫入單元格的內(nèi)容。
mySheet.write(row, col, label='測試')
1.3 表格保存
表格保存的文件后綴為.xls。
savepath = 'test.xls' myWorkbook.save(savepath)
2 定義算法結(jié)果保存函數(shù)
函數(shù)名稱為write_result_to_excel,定義如下。
def write_result_to_excel(files, fps, fns, prs, lbs, savepath='res.xls')
- files:list,每個(gè)元素為樣本名稱字符串。
- fps:list,每個(gè)元素為樣本中誤檢目標(biāo)數(shù)量。
- fns:list,每個(gè)元素為樣本中漏檢目標(biāo)數(shù)量。
- prs:list,每個(gè)元素為樣本中算法預(yù)測目標(biāo)數(shù)量。
- lbs:list,每個(gè)元素為樣本中真實(shí)標(biāo)簽?zāi)繕?biāo)數(shù)量。
- savepath:excel表格保存路徑。
3 函數(shù)完整定義
可以根據(jù)自身需要對函數(shù)進(jìn)行更改。
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='目標(biāo)標(biāo)簽個(gè)數(shù)') mySheet.write(0, 2, label='預(yù)測標(biāo)簽個(gè)數(shù)') mySheet.write(0, 3, label='正確預(yù)測個(gè)數(shù)') mySheet.write(0, 4, label='錯(cuò)誤預(yù)測個(gè)數(shù)') mySheet.write(0, 5, label='漏檢目標(biāo)個(gè)數(shù)') 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='總計(jì)') 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='準(zhǔn)確率(%)') 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 = '目標(biāo)標(biāo)簽個(gè)數(shù):{0}\n預(yù)測標(biāo)簽個(gè)數(shù):{1}\n正確預(yù)測個(gè)數(shù):{2}\n錯(cuò)誤預(yù)測個(gè)數(shù):{3}\n漏檢目標(biāo)個(gè)數(shù):{4}\n'.format(lb, pr, lb-fn, fp, fn) s += '檢出率recall:{0}\n漏檢率residual:{1}\n準(zhǔn)確率precision:{2}\n誤檢率error:{3}\n精度accuracy:{4}'.format(recall, residual, precision, error, accuracy) print(s)
以上就是python算法測試結(jié)果自動保存到excel表格的實(shí)現(xiàn)步驟的詳細(xì)內(nèi)容,更多關(guān)于python算法測試結(jié)果保存excel的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Python設(shè)置PDF中圖片的透明度的實(shí)現(xiàn)方法
在PDF文檔的設(shè)計(jì)與內(nèi)容創(chuàng)作過程中,圖像的透明度設(shè)置是一個(gè)重要的操作,尤其是在處理圖文密集型PDF文檔時(shí),本文將介紹如何使用Python添加指定透明度的圖片到PDF文檔或調(diào)整PDF文檔中現(xiàn)有圖片的透明度,需要的朋友可以參考下2024-09-09TensorFlow人工智能學(xué)習(xí)Keras高層接口應(yīng)用示例
這篇文章主要為大家介紹了TensorFlow人工智能學(xué)習(xí)中Keras高層接口的應(yīng)用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11利用Python實(shí)現(xiàn)繪制論文中的曲線圖
這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)繪制論文中需要的曲線圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03Python?中用多種方式實(shí)現(xiàn)單例模式
單例模式是一種常用的軟件設(shè)計(jì)模式,該模式的主要目的是確保某一個(gè)類只有一個(gè)實(shí)例存在,本文給大家分享Python?實(shí)現(xiàn)單例模式的五種寫法,感興趣的朋友一起看看吧2022-11-11