def Fp_Growth_Plus(path, min_support, min_conf, name): #设置存储的log文件名称 save_path=settings.MEDIA_ROOT+"/log/"+name.split("/")[-1].split(".")[0]+"_fp_growth_plus.txt" filename_rule = name.split("/")[-1].split(".")[0]+"_fp_growth_plus" data = data_mining.load_data(path) apriori_plus = data_mining.Fp_growth_plus() rule_lists = apriori_plus.generate_R(data, min_support, min_conf) #将结果存储到文本文件里面 if not os.path.exists(settings.MEDIA_ROOT+"/log"): os.mkdir(settings.MEDIA_ROOT+"/log") data_mining.save_rule(rule_lists,save_path) #去掉frozenset #round(item[2],2)保留小数点后两位 rules=[] tmp=[] for item in rule_lists: tmp = [str(list(item[0])), str(list(item[1])), round(item[2],2)] AssociationRule.objects.create(antecedent = tmp[0], consequent=tmp[1],conf = tmp[2], filename = filename_rule, min_support=min_support, min_conf=min_conf) rules.append(tmp)
def Apriori(path, min_support, min_conf, name): #设置存储的log文件名称 save_path=settings.MEDIA_ROOT+"/log/"+name.split("/")[-1].split(".")[0]+"_apriori.txt" filename_rule = name.split("/")[-1].split(".")[0]+"_apriori" data = data_mining.load_data(path) apriori = data_mining.Apriori() #算出购买的商品以及购买次数 #C1 = apriori.create_c1(data) #support_data = apriori.generate_lk_by_ck(data, C1, min_support, support_data) #txt = os.path.join(settings.MEDIA_ROOT, '/files/groceries_fpgrowth.txt') rule_lists = apriori.generate_R(data, min_support, min_conf) #将结果存储到文本文件里面 if not os.path.exists(settings.MEDIA_ROOT+"/log"): os.mkdir(settings.MEDIA_ROOT+"/log") data_mining.save_rule(rule_lists,save_path) #去掉frozenset #round(item[2],2)保留小数点后两位 rules=[] tmp=[] for item in rule_lists: tmp = [str(list(item[0])), str(list(item[1])), round(item[2],2)] AssociationRule.objects.create(antecedent = tmp[0], consequent=tmp[1],conf = tmp[2], filename = filename_rule, min_support=min_support, min_conf=min_conf) rules.append(tmp)
def analysis_detail(request, name): Tempalte = 'mainpage/analysis_detail.html' if request.method == 'POST': path = os.path.join(settings.MEDIA_ROOT, name) min_support = float(request.POST.get('min_support', '25'))#最小支持度 min_conf = float(request.POST.get('min_conf', '0.7'))#最小置信度 file_name = name.split("/")[-1] algorithm = ['Apriori','Fp_growth','Apriori_Compress', 'Apriori_Hash','Apriori_Plus','Fp_Growth_Plus'] #------------------------------------------------------------------------------------------# #检测是否已经生成过该数据的apriori关联规则 filename_apriori_rule = name.split("/")[-1].split(".")[0]+"_apriori" apriori_rulelists = AssociationRule.objects.filter(filename=filename_apriori_rule, min_support=min_support, min_conf=min_conf) if not apriori_rulelists: #计算算法运行时间 apriori_start_time = time.perf_counter() Apriori(path, min_support,min_conf,name) apriori_end_time = time.perf_counter() apriori_time = apriori_end_time - apriori_start_time AssociationTimeAdd(file_name, algorithm[0], min_support, min_conf, apriori_time) apriori_rulelists = AssociationRule.objects.filter(filename=filename_apriori_rule, min_support=min_support, min_conf=min_conf) #------------------------------------------------------------------------------------------# #算出购买的商品以及购买次数 filename_commodity = name.split("/")[-1].split(".")[0] file_commodities = Commodity.objects.filter(filename=filename_commodity) if not file_commodities: support_data = {} apriori = data_mining.Apriori() data = data_mining.load_data(path) C1 = apriori.create_c1(data) L1 = apriori.generate_lk_by_ck(data, C1, 0, support_data) for key,value in support_data.items(): tmp = [str(list(key)[0]), value] Commodity.objects.create(name=tmp[0],num=tmp[1], filename = filename_commodity) file_commodities = Commodity.objects.filter(filename=filename_commodity) #------------------------------------------------------------------------------------------# #检测是否已经生成过该数据的fp-growth关联规则 filename_fp_rule = name.split("/")[-1].split(".")[0]+"_fpgrowth" fp_rulelists = AssociationRule.objects.filter(filename=filename_fp_rule, min_support=min_support, min_conf=min_conf) if not fp_rulelists: fp_growth_start_time = time.perf_counter() Fp_growth(path, min_support,min_conf,name) fp_growth_end_time = time.perf_counter() fp_growth_time = fp_growth_end_time - fp_growth_start_time AssociationTimeAdd(file_name, algorithm[1], min_support, min_conf, fp_growth_time) fp_rulelists = AssociationRule.objects.filter(filename=filename_fp_rule,min_support=min_support, min_conf=min_conf) #------------------------------------------------------------------------------------------# #检测是否已经生成过该数据的apriori_compress关联规则 filename_apriori_compress_rule = name.split("/")[-1].split(".")[0]+"_apriori_compress" apriori_compress_rulelists = AssociationRule.objects.filter(filename=filename_apriori_compress_rule, min_support=min_support, min_conf=min_conf) if not apriori_compress_rulelists: apriori_compress_start_time = time.perf_counter() Apriori_Compress(path, min_support,min_conf,name) apriori_compress_end_time = time.perf_counter() apriori_compress_time = apriori_compress_end_time - apriori_compress_start_time AssociationTimeAdd(file_name, algorithm[2], min_support, min_conf, apriori_compress_time) apriori_compress_rulelists = AssociationRule.objects.filter(filename=filename_apriori_compress_rule, min_support=min_support, min_conf=min_conf) #------------------------------------------------------------------------------------------# #检测是否已经生成过该数据的apriori_hash关联规则 filename_apriori_hash_rule = name.split("/")[-1].split(".")[0]+"_apriori_hash" apriori_hash_rulelists = AssociationRule.objects.filter(filename=filename_apriori_hash_rule, min_support=min_support, min_conf=min_conf) if not apriori_hash_rulelists: apriori_hash_start_time = time.perf_counter() Apriori_Hash(path, min_support,min_conf,name) apriori_hash_end_time = time.perf_counter() apriori_hash_time = apriori_hash_end_time - apriori_hash_start_time AssociationTimeAdd(file_name, algorithm[3], min_support, min_conf, apriori_hash_time) apriori_hash_rulelists = AssociationRule.objects.filter(filename=filename_apriori_hash_rule, min_support=min_support, min_conf=min_conf) #------------------------------------------------------------------------------------------# #检测是否已经生成过该数据的apriori_plus关联规则 filename_apriori_plus_rule = name.split("/")[-1].split(".")[0]+"_apriori_plus" apriori_plus_rulelists = AssociationRule.objects.filter(filename=filename_apriori_plus_rule, min_support=min_support, min_conf=min_conf) if not apriori_plus_rulelists: apriori_plus_start_time = time.perf_counter() Apriori_Plus(path, min_support,min_conf,name) apriori_plus_end_time = time.perf_counter() apriori_plus_time = apriori_plus_end_time - apriori_plus_start_time AssociationTimeAdd(file_name, algorithm[4], min_support, min_conf, apriori_plus_time) apriori_plus_rulelists = AssociationRule.objects.filter(filename=filename_apriori_plus_rule, min_support=min_support, min_conf=min_conf) #------------------------------------------------------------------------------------------# #检测是否已经生成过该数据的fp_growth_plus关联规则 filename_fp_growth_plus_rule = name.split("/")[-1].split(".")[0]+"_fp_growth_plus" fp_growth_plus_rulelists = AssociationRule.objects.filter(filename=filename_fp_growth_plus_rule, min_support=min_support, min_conf=min_conf) if not fp_growth_plus_rulelists: fp_growth_plus_start_time = time.perf_counter() Fp_Growth_Plus(path, min_support,min_conf,name) fp_growth_plus_end_time = time.perf_counter() fp_growth_plus_time = fp_growth_plus_end_time - fp_growth_plus_start_time AssociationTimeAdd(file_name, algorithm[5], min_support, min_conf, fp_growth_plus_time) fp_growth_plus_rulelists = AssociationRule.objects.filter(filename=filename_fp_growth_plus_rule, min_support=min_support, min_conf=min_conf) #------------------------------------------------------------------------------------------# #算法时间进行对比 algorithm_time_lists = AssociationTime.objects.filter(filename = file_name, min_support=min_support, min_conf=min_conf) # return render(request, Tempalte , locals())