⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checkauc.m

📁 The goal of SPID is to provide the user with tools capable to simulate, preprocess, process and clas
💻 M
字号:
%plot ROC train
figure, hold on,
   Y0=[];
   Y1=[];
   for i=1:length(ttrn)
     if sign(ttrn(i)) <= 0      
       Y0=[Y0;ytrn(i)];
     else
       Y1=[Y1;ytrn(i)];
     end
   end
   
   [TN1,TP1,FP1,FN1,auc_trn,se1,tb1]=roc_tf(Y0,Y1,'b');
   

%plot ROC test   
   Y0=[];
   Y1=[];
   for i=1:length(ttst)
     if sign(ttst(i)) <= 0      
       Y0=[Y0;ytst(i)];
     else
       Y1=[Y1;ytst(i)];
     end
   end
   
   [TN2,TP2,FP2,FN2,auc_tst,se2,tb2]=roc_tf(Y0,Y1,'r'); 
   box; hold off,
   
disp(['AUC training: ', num2str(auc_trn),'; se: ', num2str(se1)]),
disp(['AUC test: ', num2str(auc_tst),'; se: ', num2str(se2)]),
%return,

% compute misclassification error

sttrn=ttrn; sttst=ttst;
sttrn(find(sttrn<=0))=-1; sttst(find(sttst<=0))=-1;

% default threshold as b obtained from lssvm
disp('====== before bias adjusting ======'),
TPtrn=length(find(sign(ytrn)==sttrn&ttrn>0));
TNtrn=length(find(sign(ytrn)==sttrn&ttrn<=0));
FPtrn=length(find(sign(ytrn)~=sttrn&ttrn<=0)); 
FNtrn=length(find(sign(ytrn)~=sttrn&ttrn>0)); 

TPtst=length(find(sign(ytst)==sttst&ttst>0));
TNtst=length(find(sign(ytst)==sttst&ttst<=0));
FPtst=length(find(sign(ytst)~=sttst&ttst<=0)); 
FNtst=length(find(sign(ytst)~=sttst&ttst>0)); 

disp(['training #misclassify : ', num2str(FPtrn+FNtrn),'; accuracy: ', num2str((TPtrn+TNtrn)/length(ttrn))]),
disp(['         FP: ', num2str(FPtrn), '; FN: ', num2str(FNtrn), ...
      ' ; Sensitivity: ',num2str(TPtrn/(TPtrn+FNtrn)), ' ; Specificity:',num2str(TNtrn/(TNtrn+FPtrn))]),
disp(['test:    #misclassify : ', num2str(FPtst+FNtst),'; accuracy: ', num2str((TPtst+TNtst)/length(ttst))]),
disp(['         FP: ', num2str(FPtst), '; FN: ', num2str(FNtst), ...
      ' ; Sensitivity: ',num2str(TPtst/(TPtst+FNtst)), ' ; Specificity:',num2str(TNtst/(TNtst+FPtst))]),


%return
% search the threshold which minimize the misclassification erro on training set
ytrn_ord=sort(ytrn); ytrn_cut=[];
tn=zeros(length(ttrn),1); tp=tn; fn=tn; fp=tn; err=tn;
for i=1:length(ttrn),
   for j=1:length(ttrn),
      if i<length(ttrn),
         ytrn_cut(i)=mean(ytrn_ord(i:i+1));
      else
         ytrn_cut(i)=ytrn_ord(i);
      end               
	   if ttrn(j)<=0,
   	   if ytrn(j)<=ytrn_cut(i),
      	   tn(i)=tn(i)+1;
	      else
   	      fp(i)=fp(i)+1; err(i)=err(i)+1;
      	end
	   else
   	   if ytrn(j)>ytrn_cut(i),
      	   tp(i)=tp(i)+1;
	      else
   	      fn(i)=fn(i)+1; err(i)=err(i)+1;
      	end,
	   end,
	end,     
end,   
figure, plot(ytrn_cut, err),
[errmin, idx]=min(err);
cutoff=mean(ytrn_cut(idx));
disp(['err minimized : ', num2str(errmin),   ' cutoff: ' ,num2str(cutoff)])

tN=0; fN=0; tP=0; fP=0; errGen=0;
for i=1:length(ttst),
   if ttst(i)<=0,
      if ytst(i)<=cutoff,
         tN=tN+1;
      else
         fP=fP+1; errGen=errGen+1;
      end
   else
      if ytst(i)>cutoff,
         tP=tP+1;
      else
         fN=fN+1; errGen=errGen+1;
      end,
   end,
end,     

disp('====== After bias adjusting ======'),
disp(['training #misclassify : ', num2str(errmin),'; accuracy: ', num2str(1-errmin/length(ttrn))]),
disp(['         FP: ', num2str(fp(idx)), '; FN: ', num2str(fn(idx)), ...
      ' ; Sensitivity: ',num2str(tp(idx)/(tp(idx)+fn(idx))), ' ; Specificity:',num2str(tn(idx)/(tn(idx)+fp(idx)))]),
disp(['test:    #misclassify : ', num2str(errGen),'; accuracy: ', num2str(1-errGen/length(ttst))]),
disp(['         FP: ', num2str(fP), '; FN: ', num2str(fN), ...
      ' ; Sensitivity: ',num2str(tP/(tP+fN)), ' ; Specificity:',num2str(tN/(tN+fP))]),

clear sttrn sttst,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -