def testSaveLearnedKnowledge(self): testValues = [-0.0310651210442, -0.618841896127, 0.649230972775, 0.649230972775, -0.618841896127] alpha = DataVector(len(testValues)) for i in xrange(len(testValues)): alpha[i] = testValues[i] learnedKnowledge = LearnedKnowledge() learnedKnowledge.update(alpha) controller = CheckpointController("saveknowledge", pathlocal) controller.setLearnedKnowledge(learnedKnowledge) controller.saveLearnedKnowledge(0) sampleLines = list() f = gzip.open(pathlocal + "/saveknowledge.0.arff.gz", "r") try: for line in f.readlines(): if len(line)>1 and "@" not in line: sampleLines.append(float(line)) finally: f.close() self.assertEqual(testValues, [float(i) for i in sampleLines])
def loadLearnedKnowledge(self, iteration): knowledgeFile = self.composeName(iteration) + ".arff.gz" knowledgeMemento = LearnedKnowledgeFormatter().deserializeFromFile( knowledgeFile) knowledge = LearnedKnowledge() knowledge.setMemento(knowledgeMemento) return knowledge
def setUp(self): level = 2 dim = 2 l = 0.00001 self.classifier = Classifier() dataContainer = ARFFAdapter( pathlocal + "/datasets/classifier.train.arff").loadData() self.classifier.setDataContainer(dataContainer) foldingPolicy = FoldingPolicy(dataContainer) self.classifier.setFoldingPolicy(foldingPolicy) grid = Grid.createLinearGrid(dim) storage = grid.createGridGenerator() storage.regular(level) self.classifier.setGrid(grid) self.classifier.setLearnedKnowledge(LearnedKnowledge()) spec = TrainingSpecification() spec.setL(l) spec.setCOperator(createOperationLaplace(grid)) self.classifier.setSpecification(spec) stopPolicy = TrainingStopPolicy() stopPolicy.setAdaptiveIterationLimit(0) self.classifier.setStopPolicy(stopPolicy) solver = CGSolver() #solver.attachEventController(InfoToScreen()) solver.setImax(500) solver.setReuse(True) self.classifier.setSolver(solver)
def testLearnDataWithFolding(self, ): correct = [ 0.6612903226, 0.1428571429, 0.5741935484, 0.9142857143, 0.6193548387, 0.5142857143, 0.5870967742, 0.7714285714, 0.6032258065, 0.5714285714, 0.6387096774, 0.4000000000, 0.5935483871, 0.7428571429, 0.6193548387, 0.5142857143, 0.5903225806, 0.7714285714, 0.6063492063, 0.5666666667 ] level = 2 dim = 6 l = 0.00001 self.classifier = Classifier() dataContainer = ARFFAdapter( pathlocal + "/../../../datasets/liver/liver-disorders_normalized.arff" ).loadData() self.classifier.setDataContainer(dataContainer) foldingPolicy = SequentialFoldingPolicy(dataContainer, 10) self.classifier.setFoldingPolicy(foldingPolicy) grid = Grid.createLinearGrid(dim) storage = grid.getGenerator() storage.regular(level) self.classifier.setGrid(grid) self.classifier.setLearnedKnowledge(LearnedKnowledge()) spec = TrainingSpecification() spec.setL(l) spec.setCOperator(createOperationLaplace(grid)) spec.setCOperatorType('laplace') self.classifier.setSpecification(spec) stopPolicy = TrainingStopPolicy() stopPolicy.setAdaptiveIterationLimit(0) self.classifier.setStopPolicy(stopPolicy) self.classifier.setSolver(CGSolver()) self.classifier.learnDataWithFolding() for i in range(10): self.assertAlmostEqual(correct[2 * i], self.classifier.trainAccuracy[i]) self.assertAlmostEqual(correct[2 * i + 1], self.classifier.testAccuracy[i])
def loadLearnedKnowledge(self, iteration): knowledgeFile = self.composeName(iteration) + ".arff.gz" knowledgeMemento = LearnedKnowledgeFormatter().deserializeFromFile(knowledgeFile) knowledge = LearnedKnowledge() knowledge.setMemento(knowledgeMemento) return knowledge