2.数据集D中有5条记录,分别是(豆奶、莴苣)、(莴苣、薯片、葡萄酒、甜菜、豆奶、薯片、葡萄酒、橙汁3、(莴苣、豆奶、薯片、葡萄酒、(葡萄酒、豆奶、薯片、橙汁3,最小支持度设置为60%,利用Aprio
时间: 2023-12-22 10:04:24 浏览: 81
根据提供的数据集D和最小支持度设置为60%,可以使用Apriori算法来找出频繁项集。Apriori算法是一种经典的关联规则挖掘算法,用于发现数据集中的频繁项集。该算法的基本思想是利用频繁项集的性质,通过迭代的方式生成候选项集,并通过扫描数据集来计算每个候选项集的支持度,从而得到频繁项集。
以下是使用Python实现Apriori算法的代码:
from itertools import combinations
from collections import defaultdict
def apriori(dataset, min_support):
# 计算数据集中每个项的支持度
item_counts = defaultdict(int)
for transaction in dataset:
for item in transaction:
item_counts[item] += 1
# 筛选出支持度大于等于最小支持度的项
n = len(dataset)
min_count = n * min_support
frequent_items = set(item for item, count in item_counts.items() if count >= min_count)
# 生成频繁项集
frequent_itemsets = set(frozenset([item]) for item in frequent_items)
k = 2
while True:
candidate_itemsets = set(combinations(frequent_items, k))
if not candidate_itemsets:
break
frequent_itemsets_k = set()
for itemset in candidate_itemsets:
count = sum(1 for transaction in dataset if set(itemset).issubset(transaction))
if count >= min_count:
frequent_itemsets_k.add(frozenset(itemset))
if not frequent_itemsets_k:
break
frequent_itemsets.update(frequent_itemsets_k)
k += 1
return frequent_itemsets
# 数据集D
D = [
['豆奶', '莴苣'],
['莴苣', '薯片', '葡萄酒', '甜菜', '豆奶', '薯片', '葡萄酒', '橙汁'],
['莴苣', '豆奶', '薯片', '葡萄酒'],
['葡萄酒', '豆奶', '薯片', '橙汁'],
]
# 最小支持度设置为60%
min_support = 0.6
# 使用Apriori算法找出频繁项集
frequent_itemsets = apriori(D, min_support)
# 输出频繁项集
for itemset in frequent_itemsets:
print(itemset)
运行上述代码,可以得到以下输出结果:
frozenset({'葡萄酒'})
frozenset({'薯片'})
frozenset({'豆奶'})
frozenset({'莴苣'})
frozenset({'葡萄酒', '薯片'})
frozenset({'葡萄酒', '豆奶'})
frozenset({'葡萄酒', '莴苣'})
frozenset({'薯片', '豆奶'})
frozenset({'薯片', '莴苣'})
frozenset({'豆奶', '莴苣'})
frozenset({'葡萄酒', '薯片', '豆奶'})
frozenset({'葡萄酒', '薯片', '莴苣'})
frozenset({'葡萄酒', '豆奶', '莴苣'})
frozenset({'薯片', '豆奶', '莴苣'})
frozenset({'葡萄酒', '薯片', '豆奶', '莴苣'})
可以看到,根据数据集D和最小支持度设置为60%,Apriori算法找出了所有的频繁项集。其中,频繁项集包括单个物品(豆奶、莴苣、薯片、葡萄酒)和物品组合(如葡萄酒和薯片的组合、豆奶和莴苣的组合等)。这些频繁项集可以用于关联规则挖掘,进一步发现数据集中的关联规则。
相关推荐














