Exemple #1
0
    def batch_test(self, train_file):

        try:
            self.data_path
        except:
            print(
                "ERROR: invoke batch_input(data_path, start_dir, end_dir) before batch testing"
            )
            return

        self.classifier = Classifier([])
        self.parser = Parser()

        accuracy = 0
        min_accuracy = 100
        count = 0
        self.classifier.prefetch(*self.fetch(train_file))

        for i in self.dirs:
            flag = True
            path = self.data_path + self.enum(5, i) + "/"
            # One initModel.xml per dir
            try:
                self.parser.parse_initM(path + self.enum(5, i) + ".xml")
            except:
                flag = False
                print("File not found : " + path + self.enum(5, i) + ".xml")
                continue

            for file in os.listdir(path):
                if file.endswith(".aggt"):
                    try:
                        if os.stat(path + file + ".plan").st_size != 0:
                            self.parser.parse_target(path + file)
                            self.prb_distrb = self.normalize(
                                self.classifier.predict(self.parser.attr_link +
                                                        self.parser.attr_node))
                            accuracy += self.get_accuracy(path + file +
                                                          ".plan")
                            count += 1
                    except:
                        pass

            print("At dir : ", i)
        try:
            accuracy /= count
            print("Accuracy : " + str(accuracy) + "%")
        except ZeroDivisionError:
            pass
Exemple #2
0
    def mono_test(self, init_file, target_file, train_file):
        '''
		For singleton testing pass pickled data from train.py . "python fileName initModel.xml target.aggt learning_file"
		'''
        self.classifier = Classifier([])
        self.parser = Parser()
        # .xml file
        self.parser.parse_initM(init_file)
        # .aggt file
        self.parser.parse_target(target_file)
        # train_file contains relevant trained data (pickled)
        self.classifier.prefetch(*self.fetch(train_file))
        # for action in self.classifier.action_count:
        # print action
        # print self.classifier.attr_count[action]
        self.classifier.make_square()
        return NaiveBayesClassifier(
            self.classifier.attr_count,
            self.classifier.action_count).predict(self.parser.attr_link +
                                                  self.parser.attr_node)
        # self.prb_distrb = self.normalize(self.classifier.predict(self.parser.attr_link + self.parser.attr_node))
Exemple #3
0
    def mono_test(self, init_file, target_file, train_file):
        '''
		For singleton testing pass pickled data from train.py . "python fileName initModel.xml target.aggt learning_file"
		'''
        self.classifier = Classifier([])
        self.parser = Parser()
        accuracy = 0
        min_accuracy = 100
        # .xml file
        self.parser.parse_initM(init_file)
        # .aggt file
        self.parser.parse_target(target_file)
        # train_file contains relevant trained data (pickled)
        self.classifier.prefetch(*self.fetch(train_file))
        self.prb_distrb = self.normalize(
            self.classifier.predict(self.parser.attr_link +
                                    self.parser.attr_node))
        #
        # print self.classifier.total_count
        #
        return self.prb_distrb
Exemple #4
0
    def get_distrb(self, targetVariables_types, targetVariables_binary,
                   targetVariables_unary, train_file):
        '''
		For singleton testing pass pickled data from train.py . "python fileName initModel.xml target.aggt learning_file"
		'''
        self.classifier = Classifier([])
        self.parser = Parser()
        accuracy = 0
        min_accuracy = 100
        # .xml file
        # self.parser.parse_initM(init_file)
        # .aggt file
        for typeName in list(targetVariables_types):
            self.parser.attr_node.append((typeName, typeName))

        for var in list(targetVariables_binary):
            rel = var[0]
            type1 = var[1]
            type2 = var[2]
            self.parser.attr_link.append((type1, rel, type2))
            for id_pair in self.parser.relMap:
                if type1 == self.parser.typeMap[id_pair[
                        0]] and type2 == self.parser.typeMap[id_pair[1]]:
                    for relation in self.parser.relMap[id_pair]:
                        self.parser.attr_link.append((type1, relation, type2))
                        self.parser.attr_link.append(
                            (type1, relation, rel, type2))

        # train_file contains relevant trained data (pickled)
        self.classifier.prefetch(*self.fetch(train_file))
        self.prb_distrb = self.normalize(
            self.classifier.predict(self.parser.attr_link +
                                    self.parser.attr_node))

        with ignored(Exception):
            del self.prb_distrb['types']
            del self.prb_distrb['===']
        return self.prb_distrb
Exemple #5
0
# Enter all the directories to be trained here.
start_dir = 1
end_dir = 540
dirs = range(start_dir, end_dir + 1)


def enum(num_digits, count):
    numero = [0] * num_digits
    for i in range(num_digits):
        numero[i] = count % 10
        count = int(count / 10)
    return ''.join(str(digit) for digit in reversed(numero))


p = Parser()
p.parse_domain(data_path + "domain.aggl")
c = Classifier(p.action_list)

for i in dirs:
    path = data_path + enum(5, i) + "/"
    # One initModel.xml per dir
    flag = True
    try:
        p.parse_initM(path + enum(5, i) + ".xml")
    except:
        flag = False
        print("File not found : " + path + enum(5, i) + ".xml")
    if flag:
        for file in os.listdir(path):
            if file.endswith(".aggt"):