def buildRules(): level = ['优', '良', '中', '差'] apr = Apriori() db = DatabaseOperations() ans = [] for item in level: data = load_data(item) L, supportData = apr.apriori(data, minSupport=0.5) rules = apr.generateRules(L, supportData, minConf=0.6) rules = list(rules) i = 0 # sort the convidence about rules and print top 3 rules sorted_rules = sorted(rules, key=lambda x: float(x[2]), reverse=True) for rule in sorted_rules: pre_course_num = '' pre_course_name = '' for item in list(list(rule)[0]): # ans = db.search_course(item[:-2]) pre_course_num += item[:-2] + ',' pre_course_name += db.search_course( item[:-2])[0][1] + ' ~ ' + item[-1:] + ',' # pre_name = db.search_course(pre_course_num[:-2]) last_course_num = '' last_course_name = '' for item in list(list(rule)[1]): last_course_num += item[:-2] + ',' last_course_name += db.search_course( item[:-2])[0][1] + ' ~ ' + item[-1:] + ',' # last_name = db.search_course(last_course_num[:-2]) # print(pre_course_num+"-->"+last_course_num+" "+str(list(rule)[2])) ans.append([ pre_course_num, pre_course_name, last_course_num, last_course_name, str(list(rule)[2]) ]) i += 1 if i >= 3: break return ans