def trainAutoregRR(self, trainData):
self.stand = ml.ClassSegStandardizer(trainData)
trainDataStd = self.stand.apply(trainData)
orders = np.arange(2,30)
nFold = self.nTrainTrial
trnCA = np.zeros((nFold, orders.size))
valCA = np.zeros((nFold, orders.size))
dialog = wx.ProgressDialog('Training Classifier',
'Featurizing', maximum=nFold+1,
style=wx.PD_ELAPSED_TIME | wx.PD_SMOOTH)
for fold, trnData, valData in ml.part.classStratified(trainDataStd, nFold=nFold):
dialog.Update(fold, 'Validation Fold: %d' % fold)
for i, order in enumerate(orders):
classifier = ml.ARC(trnData, order=order)
trnCA[fold,i] = classifier.ca(trnData)
valCA[fold,i] = classifier.ca(valData)
dialog.Update(nFold, 'Training Final Classifier')
meanTrnCA = np.mean(trnCA, axis=0)
meanValCA = np.mean(valCA, axis=0)
bestOrderIndex = np.argmax(meanValCA)
bestOrder = orders[bestOrderIndex]
bestMeanTrnCA = meanTrnCA[bestOrderIndex]
bestMeanValCA = meanValCA[bestOrderIndex]
self.classifier = ml.ARC(trainDataStd, order=bestOrder)
trainCA = self.classifier.ca(trainDataStd)
trainConfusion = np.round(100*self.classifier.confusion(trainDataStd))
dialog.Destroy()
resultText = (('Best Order: %f\n' % bestOrder) +
('Best Mean Training CA: %f\n' % bestMeanTrnCA) +
('Best Mean Validation CA: %f\n' % bestMeanValCA) +
('Final Training CA: %f\n' % trainCA) +
('Confusion Matrix:\n' + str(trainConfusion) + '\n') +
('Choices: ' + str(self.choices)))
wx.MessageBox(message=resultText,
caption='Training Completed!',
style=wx.OK | wx.ICON_INFORMATION)
self.saveResultText(resultText)
评论列表
文章目录