Exemplo n.º 1
0
 def predict(self, window):
     if self.m:
         y=signal.filtfilt(self.b, self.a, window)
         p = pburg(y, self.order, sampling=self.sampling/self.downsample)
         p.run()
         power = eeg.bin_power(abs(p.psd),p.frequencies(), self.band, self.sampling/self.downsample)
         p_labs, p_acc, p_vals =  svm_predict([0], [(10*log10(power*2./(2.*pi))).tolist()], self.m, '-q')
         print p_labs
         return p_labs
     return None
Exemplo n.º 2
0
    def train(self, log):            
        f = open(log,'r')
            
        raw=[]
        label=[]
        while 1:        
            line=f.readline()
            if not line:
                break 
            label.append(int(line))                       
            raw.append(map(float, f.readline().split(',')))
        print 'Trials : {0}'.format(len(raw))
        f.close()   
        
        #downsample to 128Hz
        for i in range(len(raw)):
            raw[i]=raw[i][::self.downsample]
            
        #windowing and calculating PSD of each window
        psd=[[],[]]
        for i in range(len(raw)):    
            while True:
                y=signal.filtfilt(self.b, self.a, raw[i][:self.window])
                p = pburg(y, self.order, sampling=self.sampling/self.downsample)
                p.run()
                power = eeg.bin_power(abs(p.psd),p.frequencies(), self.band, self.sampling/self.downsample)
                psd[label[i]].append(10*log10(power*2./(2.*pi)))#logPSD
                raw[i]=raw[i][self.increment:]
                
                if len(raw[i])<self.window:
                    break 
                
        #averaging psd
        self.avg_psd=np.mean(psd,axis=0)
        
        #training svm using svm
        y = [0] * len(psd[0])+[1]*len(psd[1])
        x = map(list,psd[0])+map(list,psd[1])

	print 'n_sample : {0}'.format(len(y))                        
        prob  = svm_problem(y, x)
        param = '-t 0 -c 4'
        svm_train(prob, svm_parameter(param+' -v 10 -q'))#just calulating ross-validation accuracy for classification
        self.m = svm_train(prob, svm_parameter(param))