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.decimate(self.trainCap)
seg = cap.segment(start=self.windowStart, end=self.windowEnd)
#print 'nSeg: ', seg.getNSeg()
targ = seg.select(matchFunc=lambda mark: self.markToStim(mark) == self.targStr)
nTarg = targ.getNSeg()
#print 'nTarg: ', nTarg
#nonTarg = seg.select(matchFunc=lambda mark: self.markToStim(mark) == self.nonTargStr)
nonTarg = seg.select(matchFunc=lambda mark: self.markToStim(mark) != self.targStr)
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 == 'LDA':
self.trainLDA(classData, dialog)
elif self.classifierKind == 'KNNE':
self.trainKNN(classData, dialog, metric='euclidean')
elif self.classifierKind == 'KNNC':
self.trainKNN(classData, dialog, metric='cosine')
elif self.classifierKind == 'LGR':
self.trainLGR(classData, dialog)
elif self.classifierKind == 'NN':
self.trainNN(classData, dialog)
else:
raise Exception('Invalid classifier kind: %s.' % str(self.classifierKind))
self.plotPanel.showPieMenu()
评论列表
文章目录