ROC曲线的绘制
2015-07-07 14:34
85 查看
几个概念
场景
AdaBoost的基本分类器的线性组合f(x)=∑m=1MαmGm(x)f(x)=\sum_{m=1}^{M}\alpha_mG_m(x)
最终的分类器
G(x)=sign(f(x))=sign(∑m=1MαmGm(x))G(x)=sign(f(x))=sign\left(\sum_{m=1}^{M}\alpha_mG_m(x)\right)
这里已知 {f(xi)|i=1,2,⋯,N}\{f(x_i)|_{i=1,2,\cdots,N}\}和{labeli|i=1,2,⋯,N}\{label_i|_{i=1,2,\cdots,N}\},前者是每个样本xix_i对应的基本分类器的输出的加权组合,后者是对应的标签数据。
接下来基于这两个数据做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')
相关文章推荐
- Html 加载音乐代码mp3
- redis命令参考(二)
- cacti中监控squid的方法
- windows消息与消息循环
- 2012年5月SAT香港真题解析
- 【斯坦福---机器学习】复习笔记之生成学习算法
- InteljIDE 设置缩写自动生成代码
- java编译错误 程序包javax.servlet不存在javax.servlet.* (eclipse中不出现,单个java文件出现)
- 在BaseWidget.js中定义的变量appConfig可以表示全局的文件config.json
- unity 3D游戏场景转换
- LeetCode Triangle
- SQL 错误 823 I/O error (bad page ID) detected during read【修复方法】
- linux下防火墙开启,关闭,查看,设置
- Centos7下Apache详细安装配置及证书申请SSL配置介绍
- odoo 中多币种处理(外币处理)
- PAT 1078. Hashing (25)
- 回调函数升级版-设计模式(观察者模式)
- C代码中如何调用C++ C++中如何调用C
- 终端命令
- SQL SERVER 2005允许自定义聚合函数-表中字符串分组连接