diff options
Diffstat (limited to 'Assignment 5/ex52.py')
-rw-r--r-- | Assignment 5/ex52.py | 54 |
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 |