?? wlyfex2svm_2.m
字號:
function WLYFEX2svm_2(featurefile,imgfile,images,faces,trainratio,pcs)
% featurefile file including features extracted by Wavelet;
% imgfile file including original images;
% images number of images;
% faces number of faces;
% trainratio percent of which used to train SVM classifier
% pcs number of principle components
load (featurefile,'X1');
load (imgfile,'V','winx','winy');
maximages =images+faces;
pcsrange =5:pcs; %ranges of PCs used to classify.
trainsimages =1:floor(images*trainratio);
trainsfaces =images+1:images+floor(faces*trainratio);
testsimages =floor(images*trainratio)+1:images;
testsfaces =images+floor(faces*trainratio)+1:images+faces;
tmp=X1(:,2:end);
tmp =mypca(double(X1(:,2:end))',pcs)';
% save tmppca tmp
Accuracyfid =fopen('Accuracy.txt','w');
errResult =[];
Xtrain =[];
Xtest =[];
errcounter =1;
for kk=pcsrange
fprintf (1,'%d ',kk);
X1 =[X1(:,1) tmp(:,1:kk)];
[m n] =size(X1);
Xtrain =[X1(trainsimages,:);X1(trainsfaces,:)];
Xtest =[X1(testsimages,:);X1(testsfaces,:)];
fidtrain =fopen('train.txt','w');
[m n] =size(Xtrain);
for i =1:m
fprintf (fidtrain,'%g',Xtrain(i,1));
for j =2:n
fprintf (fidtrain,' %g:%g',j-1,Xtrain(i,j));
end
fprintf (fidtrain,'\n');
end
fclose (fidtrain);
fidtest =fopen('test.txt','w');
[m n] =size(Xtest);
for i =1:m
fprintf(fidtest,'%g',Xtest(i,1));
for j =2:n
fprintf(fidtest,' %g:%g',j-1,Xtest(i,j));
end
fprintf(fidtest,'\n');
end
fclose (fidtest);
dos ('train');
tmpfid =fopen('log.txt','a');
fprintf (tmpfid,'\nCurrent dims of PCs=%s\n',num2str(kk));
fclose (tmpfid);
tmp1 =textread('svmout.txt');
%record the index of images unrecognized;
errResult{errcounter}=find(tmp1~=Xtest(:,1));
save errResult errResult;
if maximages >size(errResult{errcounter},1)
Xtrain1 =[V(trainsimages,:);V(trainsfaces,:)];
Xtest1 =[V(testsimages,:);V(testsfaces,:)];
save traintest Xtrain1 Xtest1 winx winy
maximages =size(errResult{errcounter},1);
end
errcounter =errcounter+1;
%calculating the accuracy of classification.
tmpsame =find(tmp1==Xtest(:,1));
accuracy =size(tmpsame,1)/size(tmp1,1);
fprintf(Accuracyfid,'%d %d\n',kk,accuracy);
dos('copy log.txt+trainlog.txt+testlog.txt log.txt');
end
fclose(Accuracyfid);
delete('svmmod.txt');
delete('svmout.txt');
delete('test.txt');
delete('testlog.txt');
delete('train.txt');
delete('trainlog.txt');
WLYshowresult('Accuracy.txt');
disp('taining an testing finished!!!');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -