mentaltasks.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:cebl 作者: idfah 项目源码 文件源码
def trainWelchLDA(self, trainData):
        self.stand = ml.ClassStandardizer(trainData)
        trainDataStd = self.stand.apply(trainData)

        #penalties = np.insert(np.power(10.0, np.linspace(-3.0, 0.0, 50)), 0, 0.0)
        penalties = np.linspace(0.0, 1.0, 51)

        nFold = self.nTrainTrial

        trnCA = np.zeros((nFold, penalties.size))
        valCA = np.zeros((nFold, penalties.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, penalty in enumerate(penalties):
                classifier = ml.LDA(trnData, shrinkage=penalty)

                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)

        bestPenaltyIndex = np.argmax(meanValCA)
        bestPenalty = penalties[bestPenaltyIndex]

        bestMeanTrnCA = meanTrnCA[bestPenaltyIndex]
        bestMeanValCA = meanValCA[bestPenaltyIndex]

        self.classifier = ml.LDA(trainDataStd, shrinkage=bestPenalty)

        trainCA = self.classifier.ca(trainDataStd)
        trainConfusion = np.round(100*self.classifier.confusion(trainDataStd))

        dialog.Destroy()

        resultText = (('Best Shrinkage: %f\n' % bestPenalty) +
                      ('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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号