diff --git a/readme.m b/readme.m index babc2a6..b18cd01 100644 --- a/readme.m +++ b/readme.m @@ -44,7 +44,10 @@ %Tipps % find, diff, xlim([0 0.1]) -%imagesc +%%imagesc +% fig=figure; +% imagesc(cmScaled) +% colorbar(); %libsvm % - svmTrain diff --git a/text/TODO.txt b/text/TODO.txt index 027407a..9da5ee1 100644 --- a/text/TODO.txt +++ b/text/TODO.txt @@ -40,9 +40,11 @@ Synergien aus WL (50ms step 200 ms window) (done) -Synergien lernen +Synergien lernen (implementiert) -shift echt variabel, bisher EEG und EMG gleich +shift echt variabel, bisher EEG und EMG gleich (test läuft) + +offset für EEG Refactoring, Comments diff --git a/usedMcode/kfoldCV.m b/usedMcode/kfoldCV.m index af80d84..c1ea267 100644 --- a/usedMcode/kfoldCV.m +++ b/usedMcode/kfoldCV.m @@ -1,32 +1,34 @@ function [model,maxC] = kfoldCV(classification,trainingData,k,cExpMax,maxDataPerClass) noClasses=size(unique(classification),1); -if cExpMax>0 %CV only if necessary - cvAccurancy=zeros(2*cExpMax+1,1); - for cExp=1:2*cExpMax+1 - c=2^(cExp-cExpMax-1); + if cExpMax>0 %CV only if necessary + cvAccurancy=zeros(2*cExpMax+1,1); + for cExp=1:2*cExpMax+1 + c=2^(cExp-cExpMax-1); - randomMapping=transpose(randperm(size(trainingData,1))); - accurancy=zeros(k,3); + randomMapping=transpose(randperm(size(trainingData,1))); + accurancy=zeros(k,3); - parfor i=1:k - trainData=trainingData(mod(randomMapping,k)+1~=i,:,:); - testData=trainingData(mod(randomMapping,k)+1==i,:,:); - trainClasses=classification(mod(randomMapping,k)+1~=i); - testClasses=classification(mod(randomMapping,k)+1==i); - %fprintf('i=%i, k=%i, c=%i\n',i,k,c) - [trainClasses,trainData]=balanceClasses(trainClasses,trainData,maxDataPerClass,noClasses); - model=svmtrain(trainClasses,trainData(:,:),sprintf('-t 0 -c %f -q',c)); - [~, accurancy(i,:), ~]=svmpredict(testClasses, testData(:,:), model,'-q'); + parfor i=1:k + trainData=trainingData(mod(randomMapping,k)+1~=i,:,:); + testData=trainingData(mod(randomMapping,k)+1==i,:,:); + trainClasses=classification(mod(randomMapping,k)+1~=i); + testClasses=classification(mod(randomMapping,k)+1==i); + %fprintf('i=%i, k=%i, c=%i\n',i,k,c) + [trainClasses,trainData]=balanceClasses(trainClasses,trainData,... + maxDataPerClass,noClasses); + model=svmtrain(trainClasses,trainData(:,:),sprintf('-t 0 -c %f -q',c)); + [~, accurancy(i,:), ~]=svmpredict(testClasses, testData(:,:), model,'-q'); + end + + cvAccurancy(cExp)=mean(accurancy(:,1)); end - - cvAccurancy(cExp)=mean(accurancy(:,1)); + [~,maxC]=max(cvAccurancy); + else + maxC=1; %no gridsearch since only one C possible end - [~,maxC]=max(cvAccurancy); -else - maxC=1; %no gridsearch since only one C possible -end bestC=2^(maxC-cExpMax-1); - [balancedClasses, balanceData]=balanceClasses(classification,trainingData,maxDataPerClass,noClasses); + [balancedClasses, balanceData]=balanceClasses(classification,trainingData,... + maxDataPerClass,noClasses); model=svmtrain(balancedClasses, balanceData(:,:),sprintf('-t 0 -c %f -q',bestC)); end diff --git a/usedMcode/svmEciton.m b/usedMcode/svmEciton.m index c9456f2..2293c49 100644 --- a/usedMcode/svmEciton.m +++ b/usedMcode/svmEciton.m @@ -46,9 +46,4 @@ for i=1:size(cm,1) cmScaled(i,:)=cm(i,:)/sum(cm(i,:)); end -% fig=figure; -% imagesc(cmScaled) -% colorbar(); - %saveas(fig,strcat(pathToFile,sprintf('../plots/%s%i%icm200ms1sPause.fig',subject,number,EEG)),'fig'); - %save(strcat(pathToFile,sprintf('../matlabData/%s%i%i200ms1sPause.mat',subject,number,EEG)),'meanAccurancy','maxC','cmScaled','-v7.3'); end