根据以下要求,写出一个完整的可运行代码,不需要写注释,不使用frozenset函数 (1)考虑事务数据集 data_set = [['面包','牛奶'], ['面包','尿布','啤酒','鸡蛋'], ['牛奶','尿布','啤酒','可乐'], ['面包','牛奶','尿布','啤酒'], ['面包','牛奶','尿布','啤酒']] 定义函数产生候选项集,要求使用蛮力、Fk-1F1、Fk-1Fk-1三种方法实现。 (2)定义最小支持度,编写程序得到候选项集并生成频繁项集 (3)定义最小置信度,编写程序提取符合要求的关联规则
时间: 2023-07-14 20:12:48 浏览: 48
```python
from itertools import combinations
# 事务数据集
data_set = [['面包','牛奶'], ['面包','尿布','啤酒','鸡蛋'], ['牛奶','尿布','啤酒','可乐'], ['面包','牛奶','尿布','啤酒'], ['面包','牛奶','尿布','啤酒']]
# 蛮力方法产生候选项集
def generate_candidate_itemsets_brute(dataset, k):
itemsets = []
for transaction in dataset:
for itemset in combinations(transaction, k):
if itemset not in itemsets:
itemsets.append(itemset)
return itemsets
# Fk-1F1方法产生候选项集
def generate_candidate_itemsets_Fk_1_F1(frequent_itemsets):
itemsets = []
for itemset1 in frequent_itemsets:
for itemset2 in frequent_itemsets:
if itemset1 != itemset2 and itemset1[:len(itemset1)-1] == itemset2[:len(itemset2)-1]:
candidate_itemset = itemset1 + (itemset2[len(itemset2)-1],)
if set(candidate_itemset) not in itemsets:
itemsets.append(set(candidate_itemset))
return itemsets
# Fk-1Fk-1方法产生候选项集
def generate_candidate_itemsets_Fk_1_Fk_1(frequent_itemsets):
itemsets = []
for itemset1 in frequent_itemsets:
for itemset2 in frequent_itemsets:
if itemset1 != itemset2 and itemset1[:len(itemset1)-1] == itemset2[:len(itemset2)-1]:
candidate_itemset = itemset1 + (itemset2[len(itemset2)-1],)
if len(set(candidate_itemset)) == len(candidate_itemset) and set(candidate_itemset) not in itemsets:
itemsets.append(set(candidate_itemset))
return itemsets
# 计算候选项集在数据集中出现的次数
def count_itemsets_in_dataset(itemsets, dataset):
counts = [0] * len(itemsets)
for i, itemset in enumerate(itemsets):
for transaction in dataset:
if itemset.issubset(transaction):
counts[i] += 1
return counts
# 选出频繁项集
def get_frequent_itemsets(itemsets, counts, min_support):
frequent_itemsets = []
for i, itemset in enumerate(itemsets):
support = counts[i] / len(data_set)
if support >= min_support:
frequent_itemsets.append(itemset)
return frequent_itemsets
# 从频繁项集中选出符合置信度要求的关联规则
def get_association_rules(frequent_itemsets, counts, min_confidence):
association_rules = []
for i, itemset in enumerate(frequent_itemsets):
for j in range(len(itemset)):
antecedent = itemset[:j] + itemset[j+1:]
consequent = itemset[j:j+1]
confidence = counts[i] / counts[itemsets.index(set(antecedent))]
if confidence >= min_confidence:
association_rules.append((antecedent, consequent, confidence))
return association_rules
# 定义最小支持度和最小置信度
min_support = 0.4
min_confidence = 0.6
# 产生频繁1项集
itemsets = [[item] for transaction in data_set for item in transaction]
counts = count_itemsets_in_dataset(itemsets, data_set)
frequent_itemsets = get_frequent_itemsets(itemsets, counts, min_support)
# 产生频繁k项集
k = 2
while len(frequent_itemsets) > 0:
if k == 2:
itemsets = generate_candidate_itemsets_Fk_1_F1(frequent_itemsets)
else:
itemsets = generate_candidate_itemsets_Fk_1_Fk_1(frequent_itemsets)
counts = count_itemsets_in_dataset(itemsets, data_set)
frequent_itemsets = get_frequent_itemsets(itemsets, counts, min_support)
k += 1
# 提取符合置信度要求的关联规则
association_rules = get_association_rules(frequent_itemsets, counts, min_confidence)
# 输出结果
print("频繁项集:")
for itemset in frequent_itemsets:
print(list(itemset))
print("\n关联规则:")
for rule in association_rules:
print(list(rule[0]), "->", list(rule[1]), "confidence:", rule[2])
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)