Ejemplo n.º 1
0
class Test2:
    def __init__(self):
        pass

    def fetch(self, fileName):
        f = open(fileName, "rb")
        return pickle.load(f)

    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))
Ejemplo n.º 2
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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 5
0
class Test:
    def __init__(self):
        pass

    def fetch(self, fileName):
        f = open(fileName, "rb")
        return pickle.load(f)

    def normalize(self, prb_distrb):
        total = 0
        for action in prb_distrb:
            total += prb_distrb[action]
        for action in prb_distrb:
            prb_distrb[action] = prb_distrb[action] / total

        prb_distrb = sorted(prb_distrb, key=prb_distrb.get, reverse=True)
        return prb_distrb

    def get_accuracy(self, plan_file):

        if os.stat(plan_file).st_size == 0:
            print("ERROR: Empty plan file")
            return

        accuracy = 0
        self.parser.parse_plan(plan_file)
        tgt_actions = self.parser.tgt_actions
        # print(tgt_actions)

        for action in self.prb_distrb:
            if action in tgt_actions:
                accuracy += (self.prb_distrb[action]) * (
                    self.prb_distrb[action])
            else:
                accuracy += (1 - self.prb_distrb[action]) * (
                    1 - self.prb_distrb[action])
        accuracy /= len(self.prb_distrb)
        accuracy *= 100
        return accuracy

    def enum(self, 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))

    def batch_input(self, data_path, start_dir, end_dir):
        self.data_path = data_path
        # Enter all the directories to be trained here.
        self.dirs = range(start_dir, end_dir + 1)

    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

    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
Ejemplo n.º 6
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"):