summaryrefslogtreecommitdiff
path: root/abml/evaluate.py
diff options
context:
space:
mode:
Diffstat (limited to 'abml/evaluate.py')
-rw-r--r--abml/evaluate.py22
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))