# Draw ROC Curve

A piece of fairly simple Matlab script to draw the ROC Curve from an array of scores and an array of labels.

```function [Tps, Fps] = ROC(scores, labels)   %% Sort Labels and Scores by Scores sl = [scores; labels]; [d1 d2] = sort(sl(1,:));   sorted_sl = sl(:,d2); s_scores = sorted_sl(1,:); s_labels = round(sorted_sl(2,:));   %% Constants counts = histc(s_labels, unique(s_labels));   Tps = zeros(1, size(s_labels,2) + 1); Fps = zeros(1, size(s_labels,2) + 1);   negCount = counts(1); posCount = counts(2);   %% Shift threshold to find the ROC for thresIdx = 1:(size(s_scores,2)+1)   % for each Threshold Index tpCount = 0; fpCount = 0;   for i = [1:size(s_scores,2)]   if (i >= thresIdx) % We think it is positive if (s_labels(i) == 1) % Right! tpCount = tpCount + 1; else % Wrong! fpCount = fpCount + 1; end end   end   Tps(thresIdx) = tpCount/posCount; Fps(thresIdx) = fpCount/negCount;   end   %% Draw the Curve   % Sort [Tps;Fps] x = Tps; y = Fps;   % Interplotion to draw spline line count = 100; dist = (x(1) - x(size(x,2)))/100; xx = [x(1):-dist:x(size(x,2))];   % In order to get the interpolations, we remove all the unique numbers [d1 d2] = unique(x); uni_x = x(1,d2); uni_y = y(1,d2); yy = spline(uni_x,uni_y,xx);   % No value should exceed 1 yy = min(yy, 1);   plot(x,y,'x',xx,yy);```

[......]

Read more