def trainClassifier(self):
if self.trainCap is None:
raise Exception('No data available for training.')
self.plotPanel.plotERP(self.trainCap)
dialog = wx.ProgressDialog('Training Classifier',
'Featurizing', maximum=self.nFold+1,
style=wx.PD_ELAPSED_TIME | wx.PD_SMOOTH)
cap = self.bandpass(self.trainCap)
seg = cap.segment(start=self.windowStart, end=self.windowEnd)
seg = self.downsample(seg)
print 'nSeg: ', seg.getNSeg()
targ = seg.select(matchFunc=lambda mark: self.markToStim(mark) == 'Play')
nTarg = targ.getNSeg()
#print 'nTarg: ', nTarg
#nonTarg = seg.select(matchFunc=lambda mark: self.markToStim(mark) == 'Backward')
nonTarg = seg.select(matchFunc=lambda mark: self.markToStim(mark) != 'Play')
nNonTarg = nonTarg.getNSeg()
#print 'nNonTarg: ', nNonTarg
classData = [targ.chanEmbed(), nonTarg.chanEmbed()]
self.standardizer = ml.Standardizer(np.vstack(classData))
classData = [self.standardizer.apply(cls) for cls in classData]
#print 'classData shape', [cls.shape for cls in classData]
if self.classifierKind == 'Linear Discriminant':
self.trainLDA(classData, dialog)
elif self.classifierKind == 'K-Nearest Euclidean':
self.trainKNN(classData, dialog, metric='euclidean')
elif self.classifierKind == 'K-Nearest Cosine':
self.trainKNN(classData, dialog, metric='cosine')
elif self.classifierKind == 'Linear Logistic':
self.trainLGR(classData, dialog)
elif self.classifierKind == 'Neural Network':
self.trainNN(classData, dialog)
else:
raise Exception('Invalid classifier kind: %s.' % str(self.classifierKind))
self.plotPanel.showMPlayer()
评论列表
文章目录