对caffe跑前向后生成的预测文件画ROC曲线

在前面一篇python版的caffe前向中,生成了一个用于画ROC曲线的txt文件,作为本代码的输入:

bash 复制代码
# -*- coding:utf-8
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve,auc
import numpy as np

colors = ['r', 'g', 'b', 'yellow', 'pink', 'black', 'purple', 'lime']

def get_output_file1(output_file, classNumber):
    prod_all=[]
    label_all=[]
    for line in open(output_file):
        x = line.split()
        prod=[]
        label=[]
        for i in range(int(classNumber)):
            prod.append(float(x[i]))
        tag = int(x[classNumber])#int(x[classNumber])
        for j in range(classNumber):
            if (j == tag):
                label.append(1)
            else:
                label.append(0)
        prod_all.append(prod)
        label_all.append(label)
    return  prod_all,label_all

def ROC(prod_all, label_all, classLabel, output_txtname, rgb="r", leged="line"):
    y_true = np.array(label_all)
    y_predict = np.array(prod_all)
    fpr, tpr, thr = roc_curve(y_true[:, classLabel], y_predict[:, classLabel])
    fid = open(output_txtname, 'a+')
    fid.writelines(str(classLabel)+"\n"+" fpr  tpr   thr"+"\n")
    for i in range(len(fpr)):
        fid.writelines( str(fpr[i])+" "+str(tpr[i])+" "+str(thr[i])+"\n")
    AUC=auc(fpr, tpr)
    plt.plot(fpr, tpr,  clip_on=False,color=rgb,label=leged+'-'+str(AUC)[0:6])
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.0])
    plt.legend(loc='best')
    return AUC

if __name__ == '__main__':

    classNumber = 3
    classes = ['eye','nose', 'ear']

    input_txtname = '/.../roc.txt'

    output_txtname = './roc1_th.txt'
    output_imgname = './roc8.jpg'

    prod_all, label_all = get_output_file1(input_txtname, classNumber)
    AUC = []
    for i in range(classNumber):
        AUC.append(ROC(prod_all, label_all, i, output_txtname, rgb=colors[i], leged=classes[i]))
    #plt.title("AUC")
    #plt.show()
    plt.savefig(output_imgname)

这里的colors为每个类的曲线的颜色,颜色的数量要多于类别个数否则不够用。

相关推荐
用户302822530685 小时前
Agent Skill工程:如何把一次成功运行提炼成可测试的方法
人工智能
ellenwan20265 小时前
看到“最新 AI 量化学习”时,先让表达变清楚
人工智能·python
IvorySQL5 小时前
打造下一代 AI Agent 的统一多模智能数据底座——PostgreSQL 与 AI 的融合演进
数据库·人工智能·postgresql
面朝大海,春不暖,花不开6 小时前
Buat New Trenches, Kalian Bisa Baca Panduan Meta Ini
人工智能·机器学习
RAOY的AI笔记6 小时前
从ChatGPT注册场景理解Web身份认证:Session、Cookie、Token与MFA基础原理
人工智能·chatgpt
vibecoding776 小时前
AI 大模型广场选型完整指南:七大平台模型矩阵、接口兼容与定价横向对比(2026 年)
人工智能·大模型·ai编程
知几蜗牛6 小时前
语音AI最大的误区,是默认每个人都在安静房间里说话
人工智能
A-刘晨阳6 小时前
AI 画图到底好不好用?Next-AI-Draw.io 部署、出图与远程访问实测
人工智能·draw.io
小淮AI6 小时前
2026年AI投研工具观察:三种技术路线的对比与思考
人工智能
学弟6 小时前
内涵:Low-Rank Adaptation (LoRA)
人工智能