AUC值计算,matlab

终于找到计算AUC值的方法了。。。。SVM与随机森林分类后都适用。对于SVM分类器,MATLAB有自己的自带方法plotroc方法,但是对于随机森林得到的分类模型和预测不适用,以下这个代码对于哪个都适用(只负责计算AUC值,木有画出roc曲线功能)

function [result]=AUC(test_targets,output)  
%计算AUC值,test_targets为原始样本标签,output为分类器得到的判为正类的概率
% 均为行或列向量  
[A,I]=sort(output);  
M=0;N=0;  
for i=1:length(output)  
    if(test_targets(i)==1)  
        M=M+1;%正类样本数
    else  
        N=N+1;  %负类样本数
    end  
end  
sigma=0;  
for i=M+N:-1:1  
    if(test_targets(I(i))==1)  
        sigma=sigma+i;%正类样本rank相加  
    end  
end
result=(sigma-(M+1)*M/2)/(M*N);