diff options
author | Timotej Lazar <timotej.lazar@fri.uni-lj.si> | 2017-04-18 17:25:18 +0200 |
---|---|---|
committer | Timotej Lazar <timotej.lazar@fri.uni-lj.si> | 2017-04-18 17:25:18 +0200 |
commit | cc41068e6b4566633ebc7a841290ce167671d2bf (patch) | |
tree | d94f6ff363a36917f1650abe46d174f4dde2dfb5 /abml/evaluate.py | |
parent | fa38d4ca99f863573b8900ef78d5191b8f2db561 (diff) |
Store student submissions in files instead of .pickle
Diffstat (limited to 'abml/evaluate.py')
-rw-r--r-- | abml/evaluate.py | 22 |
1 files changed, 10 insertions, 12 deletions
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)) |