function [R,P,area]=PND_show_ROC1(name_of_file,feature,s) S=load([name_of_file,'.mat']); lambda_min=min(S.X(:,feature)); lambda_max=max(S.X(:,feature)); lambda_N=100; lambda_l=lambda_min+(1:lambda_N)*(lambda_max-lambda_min)/lambda_N; info.sign=s; info.feature=feature; R=zeros(length(lambda_l),1); P=zeros(length(lambda_l),1); for lambda_=1:length(lambda_l) lambda=lambda_l(lambda_); info.lambda=lambda; y_hat=zeros(size(S.X,1),1); for n=1:size(S.X,1) y_hat(n)=PNC_predict1(info,S.X(n,:)); end R(lambda_)=sum((y_hat==1).*(y==1))/sum(y==1); P(lambda_)=sum((y_hat==1).*(y==1))/sum(y_hat==1); end area=sum((1-P(2:end)-1+P(1:(end-1)).*(R(1:end-1)+R(2:end))/2); end figure(1); plot(1-P,R); feature lambda sign x*sign=lambda); end R(lambda_)=sum((y_hat==1).*(Y==1))/sum(Y==1); P(lambda_)=sum((y_hat==1).*(Y==1))/sum(y_hat==1); end area end function info=PND_train1(feature_l) info.intercept=-1; S=load('training.mat'); info.weights=zeros(1,S.metadata.F) for feature_=1:length(feature_l) f=feature_l(feature_); w_max=1/min(S.X(:,f)); w_min=1/max(S.X(:,f)); w=w_min+rand(1)*(w_max-w_min); info.weights(f)=w; end end function y_hat=PND_predict1(info,x) y_hat=(sum(info.weight.*x)+info.intercept>0); end function info=PND_train2(feature_l) exp_n=200; info=PND_train1(feature_l); score=PNC_score1(info,'training',@PND_predict1); OA=score.overall_accuracy; for exp=1:exp_n info_try=PND_train1(feature_l); score=PNC_score1(info_try,'training',@PND_predict1); OA_try=score.overall_accuracy; if OA_try>OA info=info_try; OA=OA_try; disp(['OA=',num2str(OA),' exp=',num2str(exp_n)]), end end end binary_dataset=PNC_BinaryDataset(4); score=PNC_score2(binary_dataset,@PND_train2,@PND_predict1,5); function info=PND_train3() S=load('training'); Xe=[S.X ones(size(S.X,1),1)]; Xe_inv=pinv(Xe); %inv(Xe'*Xe)*Xe'; Ae=Xe_inv*S.Y; info.weights=reshape(Ae(1:end-1),1,S.metadata.F); info.intercep=Ae(end); end