Matlab绘制ROC曲线并计算AUC面积

ROC曲线是根据在二分类时,设定不同的分类阈值得到的真阳性率(TPR)和伪阳性率(FPR)得到的。

如图括号格式为(预测的标签,实际的标签)。

(sensitivity) TPR=TP/(TP+FN)= (1,1)/((1,1)+(0,1))

(1-specificity) FPR=FP/(FP+FN)= (1,0)/((1,0)+(0,0))

F1 = 2TP/(2TP+FP+FN)

ROC曲线的Matlab绘制以及AUC面积计算如下:

AUC面积为梯形面积之和。

% 2018/4/27 Matlab
%scores为每个样本属于1类的概率,testclass分为0类和1类
%输出res为AUC面积,计算方式为矩形面积之和,sum1为ROC曲线的tpr和fpr值对
function [res,sum1] = AUCROC(testclass,scores)
[m,n] = size(testclass);
tpr = zeros(51,1);
fpr = zeros(51,1);
num = 0;
AUC = 0;
for x = 0:0.02:1
    num=num+1;
    tp = 0;
    fn = 0;
    fp = 0;
    tn = 0;
    for y = 1:m
        if scores(y,1)>= x && testclass(y,1)== 1
            tp=tp+1;
        elseif scores(y,1)>=x && testclass(y,1)==0
            fp=fp+1;
        elseif scores(y,1)<x && testclass(y,1)==0
            tn=tn+1;
        elseif scores(y,1)<x && testclass(y,1)==1
            fn=fn+1;
        end
    end
    plot(tp,fp);
    hold on
    tpr(num,1) = tp/(tp+fn);
    fpr(num,1) = fp/(fp+fn);
    plot(fpr(num,1),tpr(num,1));
    hold on
end
sum = [fpr tpr];
sum1 = sortrows(sum);

for i=1:50
    line([sum1(i,1) sum1(i,1)],[sum1(i,2) sum1(i+1,2)],'linewidth',1.5,'color','r');
    hold on 
    line([sum1(i,1) sum1(i+1,1)],[sum1(i+1,2) sum1(i+1,2)],'linewidth',1.5,'color','r');
    hold on
    AUC = AUC + 0.02*((sum1(i+1,2)+sum1(i,2))/2;
end
line([0 1],[0,1],'linewidth',1.5,'color','b');
hold on 
axis([0 1 0 1]);
set(gca,'XTick',0:0.2:1);
set(gca,'YTick',0:0.2:1);
res = AUC;
%p = fig2plotly;

 

 

 

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值