ROC(Receiver Operating Characteristic)曲线即受试者工作特征曲线。ROC曲线与坐标轴围成的面积被称为AUC(Area Under Curve),这两个指标和敏感性、特异性和准确性一起,是评估算法模型性能常用的指标。

在进一步介绍ROC曲线如何绘制之前,先引入几个概念。TP(True Positives),TN(True Negatives),FP(False Positives),FN(False Negatives) 分别为阳性样本正确分类数量、阴性样本正确分类数量、阳性样本错误分类数量以及阴性样本错误分类数量。

阳性样本正确分类数量占阳性样本总数的比例TPR(即敏感性,Sensitivity),阴性样本正确分类的数量占阴性样本总数的比例FPR(即1-特异性,1-Specificity)计算如下:

(阳性样本被判断为阳性/阳性样本总数)

(阴性样本被判断为阳性/阴性样本总数)

ROC曲线横坐标为FPR,纵坐标为TPR。ROC曲线直观上反映了模型在选择不同阈值的时候敏感性与1-特异性的趋势走向。

绘制ROC曲线需要得到输出结果的概率。对于普通数值型输入,模型测试时在输出部分增加softmax函数,然后取阳性概率值。

GT = torch.FloatTensor()

PD = torch.FloatTensor()

output_sfmx = torch.softmax(logits, dim=1)[:,1] # 取输出结果的概率,并取第二列

PD = torch.cat((PD, output_sfmx.data.cpu()),0) # 目标值

GT = torch.cat((GT, label.float().cpu()),0)

roc_data = {'pd':PD,'gt':GT}

df = pd.DataFrame(roc_data) # 把输出的概率和目标组合称DataFrame形式,然后保存,用于下一步绘制ROC去曲线

df.to_csv('.\\results\\roc_data_bce_%d.csv' % k)

得到目标值和输出概率之后,借助于sklearn.metrics中的roc_curve和auc方法进行绘图和计算。

import pandas as pd

from matplotlib import pyplot as plt

from sklearn.metrics import roc_curve, auc

import os

plt.style.use('classic')

path = r'C:\Users\Phantom\Desktop\roc_data\table1'

files = os.listdir(path)

fprs = []

tprs = []

aucs=[]

for i,file in enumerate(files):

pf = os.path.join(path,file)

df = pd.read_csv(pf)

pred = df.iloc[:, 1].tolist()

target = df.iloc[:, 2].tolist()

fpr, tpr, thresholds = roc_curve(target,pred) #计算fpr和tpr,用于下一步绘图和AUC计算

fprs.append(fpr)

tprs.append(tpr)

aucs.append(auc(fpr,tpr)) # 计算AUC值

plt.plot(fprs[0],tprs[0], lw=1.5, label="W-Y, AUC=%.3f)"%aucs[0])

plt.plot(fprs[1],tprs[1], lw=1.5, label="Y-Y, AUC=%.3f)"%aucs[1] )

plt.plot(fprs[2],tprs[2], lw=1.5, label="W-W, AUC=%.3f)"%aucs[2] )

plt.xlabel("FPR",fontsize=15)

plt.ylabel("TPR",fontsize=15)

plt.title("ROC")

plt.legend(loc="lower right")

plt.show()

最后结果:

参考:

分类算法如何绘制roc曲线_ROC曲线绘制方法相关推荐

  1. 分类算法中的ROC与PR指标

    本文转自:http://blog.csdn.net/xiahouzuoxin/article/details/43165253 做过图像识别.机器学习或者信息检索相关研究的人都知道,论文的实验部分都要 ...

  2. mysql实现pr曲线_ROC 曲线与 PR 曲线

    ROC 曲线和 PR 曲线是评估机器学习算法性能的两条重要曲线,两者概念比较容易混淆,但是两者的使用场景是不同的.本文主要讲述两种曲线的含义以及应用的场景. 定义 上面四个指标用大白话解释如下 Rec ...

  3. sklearn决策树/随机森林多分类绘制ROC和PR曲线

    有篇讲解原理的博文/论文(可看可不看):<为什么Decision Tree可以绘制出ROC曲线?> 一.数据,并要先one-hot多分类标签 from sklearn.preprocess ...

  4. 机器学习:性能度量篇-Python利用鸢尾花数据绘制ROC和AUC曲线

    文章目录 前言 一.ROC与AUC 1.ROC 2.AUC 二.代码实现 总结 前言 内容接上一篇机器学习:性能度量篇-Python利用鸢尾花数据绘制P-R曲线_fanstuck的博客-CSDN博客_ ...

  5. 2020-08-24绘制ROC   PR曲线 核心方法总结 ,计算AUC核心方法

    #1   绘制ROC AUC   PR曲线 #核心方法 roc_curve(y_test, preds)  #  preds为概率形式 #source code import matplotlib.p ...

  6. 模式识别的评价方法:ROC曲线, DET曲线, FPPW, FPPI

    转载自:http://blog.csdn.net/pb09013037/article/details/48949037 因个人在做模式识别相关的工作,模式识别算法最终的性能评价是关键.但苦于网上很难 ...

  7. 分类算法之朴素贝叶斯分类(Naive Bayesian classification)

    1.1.摘要 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一 个正式的定义.然后,介绍贝叶斯分类算法的 ...

  8. 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)

    FROM: http://www.cnblogs.com/leoo2sk/archive/2010/09/17/1829190.html 0.写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法 ...

  9. 机器学习-分类算法-K-近邻算法06

    K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近 ...

最新文章

  1. Paddle网络结构中的层和模型
  2. python中for循环和while循环的区别_Python中for循环和while循环有什么区别?
  3. c语言第一课程序代码怎么打,【北北的小程序】北のC语言第一课:helloworld
  4. javascript省市三层联动,修改
  5. Scala 循环(打断嵌套循环)
  6. 谷粒商城:04. 逆向工程完善微服务系统
  7. Ubuntu关机后自动重启问题的解决方案
  8. ps读写ddr3里面的数据 zynq_DDR3读写数据调试
  9. scrcpy Device disconnected报错
  10. Excel选中单元格光标一直闪
  11. 2022年全球20大国际航运中心榜单公布,上海蝉联第三,与新加坡伦敦差距缩小 | 美通社头条...
  12. geogebra与matlab,浅谈Geogebra在大学数学教学中的应用
  13. monthly rollup和security only的区别
  14. CPC广告业务架构总结
  15. Angular+Node实战之登陆注册
  16. 如何成为一名很酷的机器人工程师?
  17. 辽宁本溪:群猴趁动物园搬迁出逃闯进市长办公室
  18. uniapp:request 请求出现400错误
  19. idea运行项目出现无法找到pojo类问题(已解决)
  20. 中天易税网上认证系统服务器,中天易税网上认证企业版

热门文章

  1. 华为FreeBuds 5i断音、断流、听歌卡顿该怎么办?
  2. HDU4893 Wow! Such Sequence! 线段树
  3. lisp点坐标x轴可以乘除吗_机试编程题
  4. 压缩图片,任意大小的图片压缩到100K以内
  5. Android dataBinding中使用include
  6. 用这6招就可以防止手机里的钱被盗
  7. Scratch第二课:公园里的淘气女孩
  8. 高端ARM选型的一些观点
  9. Dell R730 Raid10变更为Raid5
  10. RNN Seq2Seq