필터 지우기
필터 지우기

How to plot ROC and calculate AUC form these data?

조회 수: 3 (최근 30일)
Pradya Panyainkaew
Pradya Panyainkaew 2018년 4월 12일
답변: sudhakar shinde 2018년 4월 12일
Hi everyone
If I have targets and outputs in attach files. How can I plot ROC and calculate AUC by using these data ?
Thanks in advance
  댓글 수: 2
Hasan shovon
Hasan shovon 2018년 4월 12일
use this:
% code
function [auc,fpr,tpr] = fastAUC(labels,scores,plot_flag)
% function [auc,fpr,tpr] = myauc(labels,scores,plot_flag)
%
% This function calculates m AUC values for m ranked lists.
% n is the number of ranked items.
% m is the number of different rankings.
%
% Input: labels is nXm binary logical.
% scores is nXm real. For a high AUC the higher scores should have
% labels==1.
% plot_flag: binary flag, if TRUE then m ROC curves will be plotted
% (default FALSE).
%
% Output: auc is mX1 real, the Area Under the ROC curves.
% fpr is nXm real, the false positive rates.
% tpr is nXm real, the true positive rates.
if ~exist('plot_flag','var')
plot_flag = 0;
end
if ~islogical(labels)
error('labels input should be logical');
end
if ~isequal(size(labels),size(scores))
error('labels and scores should have the same size');
end
[n,m] = size(labels);
num_pos = sum(labels);
if any(num_pos==0)
error('no positive labels entered');
end
if any(num_pos==n)
error('no negative labels entered');
end
[~,scores_si] = sort(scores,'descend');
clear scores
scores_si_reindex = scores_si+ones(n,1)*(0:m-1)*n;
l = labels(scores_si_reindex);
clear scores_si labels
tp = cumsum(l==1,1);
fp = repmat((1:n)',[1 m])-tp;
num_neg = n-num_pos;
fpr = bsxfun(@rdivide,fp,num_neg); %False Positive Rate
tpr = bsxfun(@rdivide,tp,num_pos); %True Positive Rate
%Plot the ROC curve
if plot_flag==1
plot(fpr,tpr);
xlabel('False Positive');
ylabel('True Positive');
end
auc = sum(tpr.*[(diff(fp)==1); zeros(1,m)])./num_neg;
Pradya Panyainkaew
Pradya Panyainkaew 2018년 4월 12일
Due to I am a beginner, I think variables name labels and plot_flag are my outputs and targets, respectively. However, I don't know how to calculate a variable name scores. Do you have any suggestion to find "scores" for me ?

댓글을 달려면 로그인하십시오.

답변 (1개)

sudhakar shinde
sudhakar shinde 2018년 4월 12일

카테고리

Help CenterFile Exchange에서 ROC - AUC에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by