def test_run(self): ap = Apriori(self.tidList, 63) result = ap.run() sort_f = lambda x: (x.support, x.item) result.sort(key=sort_f) self.targetSet.sort(key=sort_f) self.assertListEqual(result, self.targetSet) restrict_items = ["Bagel", "Cheese", "Milk"] ap_restrict = Apriori(self.tidList, 63, restrict_items=restrict_items) result_restrict = ap_restrict.run() result_restrict.sort(key=sort_f) target_restrict = list( filter(lambda x: x.contains(restrict_items), self.targetSet)) self.assertListEqual(result_restrict, target_restrict)
class AprioriTestCase(unittest.TestCase): def setUp(self): _list = [ [1, 2, 3], [1, 4], [4, 5], [1, 2, 4], [1, 2, 6, 4, 3], [2, 6, 3], [2, 3, 6], ] #trans list to Collection tem_list = Collection() for l in _list: tem = Collection() tem_list.append(tem) for m in l: tem.append(m) self.apri = Apriori(tem_list, 0.3, 0.8) def testInit_pass(self): test_console('init_pass') self.apri.init_pass() print '.. self.apri.C : ' print self.apri.C def testCadidate_gen(self): temF = [ [1, 2, 3], [2, 3, 4], [4, 5, 6], [1, 2, 3, 4], [6, 7, 8], ] collections = self.apri.Cadidate_gen(temF) print '.. temF' print temF print '.. Cadidate_gen' print collections def testRun(self): test_console('run') self.apri.run()
def run(database, type, min_support=0.05, min_confidence=0.5): if type == 'basic': if database == 'Acme-Supermarket': preprocessing = AcmeSupermarket(acme_filepath) preprocessing.load() algorithm = Apriori(min_support, min_confidence, acme_filepath) rules = algorithm.run() preprocessing.save_rules(rules) elif database == 'Movielens': preprocessing = Movielens(movie_filepath) preprocessing.load() algorithm = Apriori(min_support, min_confidence, movie_filepath) rules = algorithm.run() # Print? else: preprocessing = Retails(retails_filepath) preprocessing.load() algorithm = Apriori(min_support, min_confidence, retails_filepath) rules = algorithm.run() # print? else: if database == 'Acme-Supermarket': preprocessing = AcmeSupermarket(acme_filepath) preprocessing.load() algorithm = AprioriEnhanced(min_support, min_confidence, acme_filepath) rules = algorithm.run() preprocessing.save_rules(rules) elif database == 'Movielens': preprocessing = Movielens(movie_filepath) preprocessing.load() algorithm = AprioriEnhanced(min_support, min_confidence, movie_filepath) rules = algorithm.run() # Print? else: preprocessing = Retails(retails_filepath) preprocessing.load() algorithm = AprioriEnhanced(min_support, min_confidence, retails_filepath) rules = algorithm.run()
# -*- coding: utf-8 -*- from apriori import Apriori, ImprovedApriori with open('after.csv', 'r') as fp: lines = fp.readlines() dataSet3 = [] for line in lines: line = line.rstrip() dataSet3.append(line.split(",")) minsup = 0.005 minconf = 0.5 if __name__ == '__main__': # test1 apriori = Apriori(dataSet3, minsup, minconf) apriori.run() apriori.print_frequent_itemset() apriori.print_rule()
def apriori(): session.rollback() users = session.query(User).all() favs = list() for user in users: favIds = list() favorites = session.query(Favorite).filter_by( user_mail=user.mail).all() for favorite in favorites: favIds.append(str(favorite.recipe_id)) favs.append(favIds) minsup = 0.4 minconf = 0.4 apriori = Apriori(favs, minsup, minconf) apriori.run() apriori.print_frequent_itemset() result = apriori.print_rule() # print(result) apriori_advices = list() for res in result: x = res.split(' ==> ') # print(len(x[0])) if len(x[0]) <= 2: # print(x[0]) apriori_advices.append(x[0]) apriori_advices.append(x[1]) # print(apriori_advices) key = list() value = list() i = 0 while i < len(apriori_advices): key.append(int(apriori_advices[i])) value.append(int(apriori_advices[i + 1])) i += 4 favorites = session.query(Favorite).filter_by(user_mail=g.user.mail).all() print(favorites) favoriteIds = list() for favorite in favorites: favoriteIds.append(favorite.recipe_id) print(favoriteIds) print(key) adviceIds = list() i = 0 if (len(favoriteIds) > 0): while i < len(key): if contains(fs, key[i]) != True: adviceIds.append(value[i]) i += 1 print(adviceIds) adviceIds = list(set(adviceIds)) print(adviceIds) advices = session.query(Recipe).filter(Recipe.id.in_(adviceIds)).all() return jsonify([advice.serialize for advice in advices]), 201
keys = set() transactionData = list() for line in f: line = str(line).replace("\n", "") transactionItems = str(line).split(",") transactionData.append(transactionItems) return transactionData # dataset = [ # ['bread', 'milk'], # ['bread', 'diaper', 'beer', 'egg'], # ['milk', 'diaper', 'beer', 'cola'], # ['bread', 'milk', 'diaper', 'beer'], # ['bread', 'milk', 'diaper', 'cola'], # ] dataset = getDataset() minsup = 0.01 minconf = 0.4 ap = Apriori(dataset, minsup, minconf) # run algorithm ap.run() # print out frequent itemset ap.print_frequent_itemset() # print out rules ap.print_rule()