def trainKNN(self, classData, dialog, metric):
ks = np.arange(1,10)
trainAUC = np.zeros(ks.shape)
validAUC = np.zeros(ks.shape)
partitionGenerator = ml.part.classRandomSubSample(classData,
self.trainFrac, self.nFold)
for fold, trainData, validData in partitionGenerator:
dialog.Update(fold, 'Validation Fold: %d' % fold)
for i, k in enumerate(ks):
classifier = ml.KNN(trainData, k=k, distMetric=metric)
trainAUC[i] += classifier.auc(trainData)
validAUC[i] += classifier.auc(validData)
dialog.Update(self.nFold, 'Training Final Classifier')
trainAUC /= self.nFold
validAUC /= self.nFold
print 'train AUC: ', trainAUC
print 'valid AUC: ', validAUC
bestK = ks[np.argmax(validAUC)]
print 'best K: ', bestK
self.classifier = ml.KNN(classData, k=bestK, distMetric=metric)
finalAUC = self.classifier.auc(classData)
dialog.Destroy()
wx.MessageBox(message=('Best K: %d\n' % bestK) + \
('Mean Validation AUC: %f\n' % np.max(validAUC)) +
('Final Training AUC: %f' % finalAUC),
caption='Training Completed!', style=wx.OK | wx.ICON_INFORMATION)
评论列表
文章目录