matlab计算prc曲线auc面积,ROC曲线及其matlab实现ROC曲线的绘画
ROC曲线(Receiver Operating Characteristic Curve)是利用Classification模型真正率(True Positive Rate)和假正率(False Positive Rate)作为坐标轴,图形化表示分类方法的准确率的高低。
ROC图的一些概念定义::真正(True Positive , TP)被模型预测为正的正样本假负(False Negative , FN)被模型预测为负的正样本假正(False Positive , FP)被模型预测为正的负样本真负(True Negative , TN)被模型预测为负的负样本
真正率(TPR)TPR = TP /(TP
+ FN)正样本预测结果数/正样本实际数。在ROC曲线中,TPR作为Y轴
假正率(FPR)FPR = FP /(FP
+ TN)被预测为正的负样本结果数/负样本实际数。在ROC曲线中,FPR作为X轴
关于ROC曲线的相关概念的解释,请参阅cowboy_wz的博客ROC曲线:http://blog.csdn.net/chl033/article/details/4507544
我在此主要做的事情是画出ROC曲线工程实现方面的一些解释。我们设计一个函数,此函数需要有一个模型预测值predict和数据标签值ground_truth作为输入参数。分为几步进行实现。
(1)统计数据标签值ground_truth(及y)中分类为0和分类为1的数据数目:
pos_num=sum(ground_truth==1);neg_num=sum(ground_truth);
(2)对利用模型求出的预测值predict由低到高进行排序;对应数据原来所在位置进行索引记录,用于重新排序ground_truth.利用函数sort实现,sort详情请查看help文档:
[pre,Index]=sort(predict); ground_truth=ground_truth(Index);
(3)对ground_truth和predict遍历i=1:n,n是测试集数目。其目的是随着predict中概率的增加,随着增加判断正负样本的阈值;也就是说取遍历到的predict值为阈值,大于阈值的假设预测为正样本(阈值右边),小于阈值的假设预测为负样本(阈值左边)。
所以同时我们可得到真正TP 和假正FP值:TP=sum(ground_truth(i:n)==1);FP=sum(ground_truth(i:n)==0);
这时我们就可以求取TPR 和FPR了:TPR=TP/pos_num; FPR=FP/neg_num; 把求取到的值保存起来(x(i),y(i)),因为这就是我们要在图上画的点。
(4)返回曲线与坐标轴间的面积auc。我们的目的是测量数据的准确率,这个面积就是一个量度,auc越大,准确率越高。
auc=auc+(y(i)+y(i-1))*(x(i-1)-x(i))/2;
实现ROC曲线的代码如下:
% predict - 分类器对测试集的分类结果
% ground_truth - 测试集的正确标签,这里只考虑二分类,即0和1
% auc - 返回ROC曲线的曲线下的面积
function auc = plot_roc( predict, ground_truth )
%初始点为(1.0, 1.0)
%计算出ground_truth中正样本的数目pos_num和负样本的数目neg_num
pos_num = sum(ground_truth==1);
neg_num = sum(ground_truth==0);
m=size(ground_truth,1);
[pre,Index]=sort(predict);
ground_truth=ground_truth(Index);
x=zeros(m+1,1);
y=zeros(m+1,1);
auc=0;
x(1)=1;y(1)=1;
for i=2:m
TP=sum(ground_truth(i:m)==1);FP=sum(ground_truth(i:m)==0);
x(i)=FP/neg_num;
y(i)=TP/pos_num;
auc=auc+(y(i)+y(i-1))*(x(i-1)-x(i))/2;
end;
x(m+1)=0;y(m+1)=0;
auc=auc+y(m)*x(m)/2;
plot(x,y);
end
具体实现结果:
matlab计算prc曲线auc面积,ROC曲线及其matlab实现ROC曲线的绘画相关推荐
- matlab计算三角格网面积,不规则平面图形的面积计算及其MATLAB实现.doc
摘要:面积的计算问题是我们在生产.生活中经常遇到的问题,对于平面图形的面积计算,能够考虑运用公式的,往往是那些比较规则的平面图形,诸如三角形.长方形.梯形等.其计算一般都有成熟的计算方法.然而,并不可 ...
- matlab 计算闭合区域的面积
1. matlab函数bwareaopen──删除小面积对象 格式:BW2 = bwareaopen(BW,P,conn) 作用:删除二值图像BW中面积小于P的对象,默认情况下使用8邻域. 算法: ( ...
- 期权定价matlab计算,期权的定价方法概述及利用matlab计算期权价格
期权的定价方法概述及利用matlab计算期权价格 摘要期权是功能最多.最激动人心的融衍生工具之一.期权定价问题一直是金融数学当中最复杂的问题之一,简要介绍几种基本的期权定价理论,并利用matlab金融 ...
- matlab计算prc曲线auc面积,MATLAB画ROC曲线,及计算AUC值
根据决策值和真实标签画ROC曲线,同时计算AUC的值 步骤: 根据决策值和真实标签画ROC曲线,同时计算AUC的值: 计算算法的决策函数值deci 根据决策函数值deci对真实标签y进行降序排序,得到 ...
- matlab计算prc曲线auc面积,ROC曲线和AUC面积计算 matlab
在网上看到的程序,粘贴在自己的博客中,以备以后用后用到了好查找: function [auc, curve] = ROC(score, target, Lp, Ln) % This function ...
- matlab 计算准确率,精确率、召回率、准确率与ROC曲线
精确率表示的是预测为某类样本(例如正样本)中有多少是真正的该类样本,一般用来评价分类任务模型. 比如对于一个分类模型,预测结果为A类的所有样本中包含A0个真正的A样本,和A1个不是A样本的其他类样本, ...
- matlab计算三角格网面积,MATLAB中plot的用法
_(x^2+y^2) 例5.2.4 绘制由方程形成的立体图.(见图5.2.5) z=xe >> clear >> x=-2:0.1:2;y=x; >> [X,Y]= ...
- 通过MATLAB计算不规则图像的面积,周长,圆度,矩形度,伸长度
close all;clear all;clc %N=4提取的四个特征:面积,周长,紧致度,离心率 %N=5提取的五个特征:面积,周长,圆度,矩形度,伸长度 N=5; Feature=zeros(15 ...
- python和matlab计算速度对比_【转载】Fortran与Matlab的计算速度对比(Code by myself)...
http://blog.163.com/zpfzcjndx@126/blog/static/6354568120135196735577/ 最近一直在计算向量式有限元的膜单元,笔者真心给Matlab的 ...
- matlab 计算一组数据的方差分析,多因素方差分析|MATLAB 数学统计与优化|MATLAB技术论坛 - Powered by Discuz!...
一般来讲,使用anovan函数进行多因素方差分析时,调用格式是第二种形式,{A,B,C,D}里面是没有编码的形式,返回一个方差分析表的形式,不过如果要求精度高的话,似乎不能显示更多的小数点位数. 不过 ...
最新文章
- VTK:BackfaceCulling背面剔除用法实战
- Kinect v2.0 for windows开发环境说明
- Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性
- 信息系统项目管理师论文_「高项论文」谨防信息系统项目管理师论文12个写作丢分点...
- Java JUC工具类--ForkJoin
- 关于python学习,最系统的学习网站看这里
- exchange EWS 开发随笔二
- IIS7安装URLReWrite的妙用
- Day77 Java框架 SSH案例_ERP(十一)_CXF框架_红日物流BOS系统_ERP物流信息管理
- 阵列卡PERCH330_H730配置手册
- tensorflow2实现vnet
- 2019-4给学员试讲内容分享
- 随机池化(Stochastic Pooling)
- scaling之旅_【scaling】什么意思_英语scaling的翻译_音标_读音_用法_例句_在线翻译_有道词典...
- Windows10 DNS被劫持 - 解决方案
- 【回溯专题】—— 回溯算法入门篇
- PAT(乙级)2019年春季考试 7-5 校庆
- ElasticSearch SocketTimeoutException解决
- 《行为经济学》北京大学 孟涓涓 第四章
- 一个程序员的局域网聊天