分类算法如何绘制roc曲线_ROC曲线绘制方法
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曲线绘制方法相关推荐
- 分类算法中的ROC与PR指标
本文转自:http://blog.csdn.net/xiahouzuoxin/article/details/43165253 做过图像识别.机器学习或者信息检索相关研究的人都知道,论文的实验部分都要 ...
- mysql实现pr曲线_ROC 曲线与 PR 曲线
ROC 曲线和 PR 曲线是评估机器学习算法性能的两条重要曲线,两者概念比较容易混淆,但是两者的使用场景是不同的.本文主要讲述两种曲线的含义以及应用的场景. 定义 上面四个指标用大白话解释如下 Rec ...
- sklearn决策树/随机森林多分类绘制ROC和PR曲线
有篇讲解原理的博文/论文(可看可不看):<为什么Decision Tree可以绘制出ROC曲线?> 一.数据,并要先one-hot多分类标签 from sklearn.preprocess ...
- 机器学习:性能度量篇-Python利用鸢尾花数据绘制ROC和AUC曲线
文章目录 前言 一.ROC与AUC 1.ROC 2.AUC 二.代码实现 总结 前言 内容接上一篇机器学习:性能度量篇-Python利用鸢尾花数据绘制P-R曲线_fanstuck的博客-CSDN博客_ ...
- 2020-08-24绘制ROC PR曲线 核心方法总结 ,计算AUC核心方法
#1 绘制ROC AUC PR曲线 #核心方法 roc_curve(y_test, preds) # preds为概率形式 #source code import matplotlib.p ...
- 模式识别的评价方法:ROC曲线, DET曲线, FPPW, FPPI
转载自:http://blog.csdn.net/pb09013037/article/details/48949037 因个人在做模式识别相关的工作,模式识别算法最终的性能评价是关键.但苦于网上很难 ...
- 分类算法之朴素贝叶斯分类(Naive Bayesian classification)
1.1.摘要 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一 个正式的定义.然后,介绍贝叶斯分类算法的 ...
- 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
FROM: http://www.cnblogs.com/leoo2sk/archive/2010/09/17/1829190.html 0.写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法 ...
- 机器学习-分类算法-K-近邻算法06
K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近 ...
最新文章
- Paddle网络结构中的层和模型
- python中for循环和while循环的区别_Python中for循环和while循环有什么区别?
- c语言第一课程序代码怎么打,【北北的小程序】北のC语言第一课:helloworld
- javascript省市三层联动,修改
- Scala 循环(打断嵌套循环)
- 谷粒商城:04. 逆向工程完善微服务系统
- Ubuntu关机后自动重启问题的解决方案
- ps读写ddr3里面的数据 zynq_DDR3读写数据调试
- scrcpy Device disconnected报错
- Excel选中单元格光标一直闪
- 2022年全球20大国际航运中心榜单公布,上海蝉联第三,与新加坡伦敦差距缩小 | 美通社头条...
- geogebra与matlab,浅谈Geogebra在大学数学教学中的应用
- monthly rollup和security only的区别
- CPC广告业务架构总结
- Angular+Node实战之登陆注册
- 如何成为一名很酷的机器人工程师?
- 辽宁本溪:群猴趁动物园搬迁出逃闯进市长办公室
- uniapp:request 请求出现400错误
- idea运行项目出现无法找到pojo类问题(已解决)
- 中天易税网上认证系统服务器,中天易税网上认证企业版