Newer
Older
masterarbeit / svmEcitonEEG.m
@jph jph on 20 Jul 2016 1 KB add file for EEG analysis
close all
clear variables
clc

load('/nfs/wsi/ti/messor/hohlochj/matlabData/AO1200msWindowEMG1sWindowEEG200msShift1sPauseFreq0to200.mat');
addpath('/nfs/wsi/ti/messor/hohlochj/libsvm/matlab');
%k=2; 
%maxExpC=0; % c\in {2^i|i=-maxExpC:1:maxExpC}

%choose to estimate based on EEG or EMG
trainingData=trainingDataEEG;
clear trainingDataEEG;
clear trainingDataEMG;

accurancy=zeros(k,3);
maxC=zeros(k,1);
noClasses=size(unique(classification),1);
cm=zeros(noClasses);
randMap=randperm(size(trainingData,1));
disp('startCV')
parfor i=1:k
    leaveOut=trainingData(mod(randMap,k)==i-1,:,:);
    leaveClasses=classification(mod(randMap,k)==i-1);
    remaining=trainingData(mod(randMap,k)~=i-1,:,:);
    remainingClasses=classification(mod(randMap,k)~=i-1);
    disp(datestr(datetime('now')))
    fprintf('create %ith model\n',i)
    [model,maxC(i)]=kfoldCV(remainingClasses,remaining,k,maxExpC,1000);
    disp(datestr(datetime('now')))
    
    [predictions,accurancy(i,:),pvalues]=svmpredict(leaveClasses,leaveOut(:,:),model);
    cm=cm+confusionmat(leaveClasses,predictions); %confusion matrix
    %cf: for each cue what was the prediction (maybe colourCoded)
end
meanAccurancy=mean(accurancy(:,1))

fig=figure;
cmScaled=zeros(size(cm));
for i=1:size(cm,1)
    cmScaled(i,:)=cm(i,:)/sum(cm(i,:));
end
imagesc(cmScaled)
colorbar();
saveas(fig,'/nfs/wsi/ti/messor/hohlochj/plots/cmEMG200ms1sPause.fig','fig');