# -*- 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)