ROC曲线的绘制

原创 2015年07月07日 14:34:58

几个概念

这里写图片描述

场景

AdaBoost的基本分类器的线性组合

f(x)=m=1MαmGm(x)

最终的分类器

G(x)=sign(f(x))=sign(m=1MαmGm(x))

这里已知 {f(xi)|i=1,2,,N}{labeli|i=1,2,,N},前者是每个样本xi对应的基本分类器的输出的加权组合,后者是对应的标签数据。

接下来基于这两个数据做ROC曲线图。

作图

这里写图片描述

绘图代码:

#predStrengths 和classLabels都是299个元素的ndarray对象。
ySum = 0.0 #variable to calculate AUC
N = classLabels.shape[0] #总样本个数
numPosClas = np.sum(classLabels==1.0) #样本中正例的个数
yStep = 1.0/numPosClas;  #真阳率(在纵轴上)的分母是正样本的个数
xStep = 1.0/(N-numPosClas) #假阳率(在横轴上)的分母是负样本的个数
srtidxs = predStrengths.argsort()# 从小到大排列的序号

fig = plt.figure()
fig.clf()
ax = plt.subplot(111)

cur = (1.0,1.0) #左上顶角坐标,全部样本都判为正,真阳率和假阳率都为1
for idx in srtidxs: 
    #从值最小到值最大,作为判断门限,将大于该值的样本判为正,将小于等于该值的样本判为负
    if classLabels[idx] == 1.0: # 样本为正,影响的是真阳率,判错了,所以真阳率要减小一个刻度
        delX = 0; 
        delY = yStep;
    else: # 样本为负,影响的是假阳率,盘对了,故假阳率要减小一个刻度
        delX = xStep; 
        delY = 0;

        #每次x轴(即假阳率)调整时,将ySum加上当前的y轴刻度值,
        ySum += cur[1] 

    ax.plot([cur[0],cur[0]-delX],[cur[1],cur[1]-delY], c='b')
    cur = (cur[0]-delX,cur[1]-delY) #更新坐标,从右上角向左下角画的曲线    
ax.plot([0,1],[0,1],'b--') # 画一条对角线,从(0,0)到(1,1)

auc = np.str( "%.4f"%(ySum*xStep)) #曲线下的面积
plt.xlabel(u'假阳率',{'fontname':'STFangsong','fontsize':15}); 
plt.ylabel(u'真阳率',{'fontname':'STFangsong','fontsize':15})
plt.title(u'ROC曲线'+'(AUC = ('+auc+')',{'fontname':'STFangsong','fontsize':15})

ax.axis([0,1,0,1]) 
fig.savefig('roc.png',dpi=300,bbox_inches='tight')
版权声明:作者:Jinliang's Hill(金良山庄),欲联系请评论博客或私信,CSDN博客: http://blog.csdn.net/u012176591

相关文章推荐

让latex写论文更方便的几个工具

1. LaTeX转word Pandoc可以转换的文件类型有: reStructuredText, textile, HTML, DocBook, LaTeX, MediaWiki markup, T...

Python下的数据处理和机器学习,对数据在线及本地获取、解析、预处理和训练、预测、交叉验证、可视化

在[1]: %matplotlib inline 抓取的数据 一个简单的HTTP请求 在[2]: import requests print re...

ROC曲线的绘制和含义以及应用

  • 2011年09月05日 10:56
  • 342KB
  • 下载

用sklearn绘制ROC曲线

用sklearn绘制ROC曲线

【转载】使用Maltlab中的plotroc()函数绘制ROC曲线

原文自http://blog.csdn.net/fuhpi/article/details/8813455  ROC曲线是通用的分类器评价工具,matlab函数中自带了绘制该曲线的函数plotroc。...

libsvm在python下的使用及用绘制ROC曲线

libsvm在python下的使用简单示例 首先是训练svm
  • a_1937
  • a_1937
  • 2014年09月15日 22:35
  • 2561

在caffe中绘制ROC曲线

最近正在学习caffe,发现上手还是比较容易的,很快就可以训练出自己的网络啦。可是当我想绘制ROC曲线来评价一下结果的时候,却发现在找不到一个明确的办法。在各大论坛逛了一圈也问了一圈,依旧是得不到解答...

ROC曲线绘制及AUC计算

ROC曲线绘制及AUC计算 思想改变世界,技术连接你我。果果,今天过得好吗?—Joly Zhang ROC曲线可以直观的反映分类性能,而AUC则可定量的对分类器进行测评。今天我们以简洁的方式说...

ROC曲线等错误率计算

  • 2013年05月11日 19:06
  • 896B
  • 下载

ROC曲线AUC计算

  • 2014年05月20日 06:59
  • 9KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ROC曲线的绘制
举报原因:
原因补充:

(最多只允许输入30个字)