为什么Polyxpoly在GNU八度中不起作用

时间:2019-06-24 13:16:42

标签: c++ c matlab octave

我想绘制Det曲线和roc曲线为什么polyxpoly不起作用? 我根据以下步骤绘制了DET曲线:首先,我更改了阈值并计算了错误拒绝和错误接受的数量。其次,我使用plot MATLAB函数绘制FAR和FRR。

function [TPR,FPR] = DETCurve(G,I)
#load('G.dat'); 
#load('I.dat');  

#load data from the column 4 fscore 
i0=find(Fscore(:,end)==0);
i1=find(Fscore(:,end)==1);

D0=Fscore(i0,end-1);
D1=Fscore(i1,end-1);

% Creates a matrix
TPR = zeros(1, 1000);
FPR = zeros(1, 1000); 

#number of positive responses  and negative responses in ground truth
P = length(i1); 
N = length(i0);
index = 0; 
   % Assume the threshold as 0.01
   for threshold = 0:0.001:1
     TP = 0; 
     FP = 0; 
     %Provides the D1 count 
     for i = 1:length(i1)
       if (D1(i) >= threshold) TP = TP + 1;
       end
     end
     % Provides the D0count
     for i1 = length(i0) 
       if(D0(i1) >= threshold) 
       FP = FP + 1; 
     end
   end 

   index = index + 1;
   % Calculating true positive rate
   TPR(index) = TP/P;
   % Calculating false positive rate 
   FPR(index) = FP/N; 
 end 
 % Calculating false negative rate(FNR) using TPR+FNR=1 
 FNR = (1-TPR);
 x = 0:0.1:1;
 y = x;

#[x(i),y(i)] = polyxpoly(x,y,FPR,FNR); 
 fprintf('EER(X): %d n', x(i));
 fprintf('EER(Y): %d n', y(i)); 
 plot(FPR,FNR,'LineWidth',2, 'color','g');

 hold on;

 plot(x,y,x,1-y, 'color','r'); 
 plot (x(i),y(i),'X','MarkerSize',10, 'LineWidth', 2,'Color','b');
 hold off;
 title('DET CURVE');
 xlabel('False Positive Rate (FPR) ');
 ylabel('False Neagtive Rate (FNR) ');
end 

0 个答案:

没有答案