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])
예제 #2
0
 def loadLearnedKnowledge(self, iteration):
     knowledgeFile = self.composeName(iteration) + ".arff.gz"
     knowledgeMemento = LearnedKnowledgeFormatter().deserializeFromFile(
         knowledgeFile)
     knowledge = LearnedKnowledge()
     knowledge.setMemento(knowledgeMemento)
     return knowledge
예제 #3
0
 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)
예제 #4
0
    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