From cc41068e6b4566633ebc7a841290ce167671d2bf Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Tue, 18 Apr 2017 17:25:18 +0200 Subject: Store student submissions in files instead of .pickle --- abml/evaluate.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'abml/evaluate.py') diff --git a/abml/evaluate.py b/abml/evaluate.py index 2e318fb..cb959ed 100644 --- a/abml/evaluate.py +++ b/abml/evaluate.py @@ -1,4 +1,4 @@ -import pickle +import os.path import argparse import Orange from Orange.evaluation import TestOnTestData, CA, AUC, LogLoss @@ -8,30 +8,28 @@ import orangecontrib.evcrules.logistic as logistic import orangecontrib.abml.abrules as rules import orangecontrib.abml.argumentation as arg -parser = argparse.ArgumentParser(description='Learn and test rules for prolog programs.') -parser.add_argument('Name', type=str, help='Predicate name.') +parser = argparse.ArgumentParser(description='Learn and evaluate rules for Prolog programs.') +parser.add_argument('path', help='path to data directory') args = parser.parse_args() -name = args.Name +path = args.path # load data -data = Orange.data.Table('data/{}/programs-train'.format(name)) +data = Orange.data.Table(os.path.join(path, 'programs-train')) # create learner -rule_learner = rp.Rules4Prolog(name, 0.9) - - +rule_learner = rp.Rules4Prolog(path, 0.9) # learn a classifier classifier = rule_learner(data) # save model -fmodel = open("data/{}/model.txt".format(name), "wt") +fmodel = open(os.path.join(path, 'model.txt'), "wt") for r in classifier.rule_list: print(r, r.curr_class_dist, r.quality) fmodel.write("{} dist={} quality={}\n".format(str(r), str(r.curr_class_dist), r.quality)) # accuracy of model -testdata = Orange.data.Table('data/{}/programs-test'.format(name)) +testdata = Orange.data.Table(os.path.join(path, 'programs-test')) predictions = classifier(testdata) acc = 0 for i, p in enumerate(predictions): @@ -64,12 +62,12 @@ scores += "CA\tAUC\tLogLoss\tMethod\n" for ni, n in enumerate(names): scores += "{}\t{}\t{}\t{}\n".format(ca[ni], auc[ni], ll[ni], n) print(scores) -fscores = open("data/{}/scores.txt".format(name), "wt") +fscores = open(os.path.join(path, 'scores.txt'), 'wt') fscores.write(scores) all_rules = classifier.rule_list all_rules.sort(key = lambda r: r.quality, reverse=True) -rfile = open("data/{}/rules.txt".format(name), "wt") +rfile = open(os.path.join(path, 'rules.txt'), 'wt') for r in all_rules: print(r, r.curr_class_dist, r.quality) rfile.write("{} {} {}\n".format(r, r.curr_class_dist, r.quality)) -- cgit v1.2.1