Esempio n. 1
0
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)	
Esempio n. 2
0
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)
Esempio n. 3
0
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())