aboutsummaryrefslogtreecommitdiff
path: root/Assignment 5/ex52.py
diff options
context:
space:
mode:
Diffstat (limited to 'Assignment 5/ex52.py')
-rw-r--r--Assignment 5/ex52.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/Assignment 5/ex52.py b/Assignment 5/ex52.py
new file mode 100644
index 0000000..e2d53a1
--- /dev/null
+++ b/Assignment 5/ex52.py
@@ -0,0 +1,54 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Sat Dec 12 12:20:48 2015
+
+@author: camil
+"""
+
+import sys
+sys.path.insert(0, './packages')
+
+from run_apriori import *
+
+def load_movie_names():
+ movies = {}
+ with open('data/u.item') as f:
+ for movie in f:
+ data = movie.split('|')
+ movies[str(data[0])] = data[1]
+ return movies
+
+def print_rule_nice(rule, movies):
+ rule = rule.split('[')
+ sets = rule[0].split(' <- ')
+ lhs = [movies[i] for i in sets[0].split(' ')]
+ rhs = [movies[i] for i in sets[1].split(' ')]
+ print('[' + rule[1] + ':\n Con: ' + ', '.join(lhs) + '\n Ant: ' + ', '.join(rhs))
+
+def ex522(rules, movies):
+ for rule in rules:
+ print_rule_nice(rule, movies)
+
+def ex523(sets, movies):
+ usable_sets = []
+ for s in sets:
+ data = s.split('[')
+ items = [int(d) for d in data[0].split(' ')]
+ support = float(data[1][5:-1])
+ usable_sets.append((items, support))
+
+ usable_sets.sort(key=lambda x: x[1], reverse=True)
+
+ for i in range(4):
+ print(', '.join([movies[str(x)] for x in usable_sets[i][0]]) +
+ ' (support: ' + str(usable_sets[i][1]) + ')')
+
+ print(filter(lambda x: len(x[0]) > 3, usable_sets))
+
+if __name__ == '__main__':
+ sets, rules = run_apriori('data/MovieLensData.txt', 30, 80, 1000)
+ movies = load_movie_names()
+
+ ex522(rules, movies)
+ ex523(sets, movies)
+ \ No newline at end of file