数据集D中有5条记录,分别是(豆奶、莴苣}、{莴苣、薯片、葡萄酒、甜菜}、{豆奶、薯片、葡萄酒、橙汁}、{莴苣、豆奶、薯片、葡萄酒}、{葡萄酒、豆奶、薯片、橙汁},最小支持寺度设置为60%,利用Aprioir产生对应的频繁项集。
时间: 2023-12-20 12:05:19 浏览: 71
根据提供的数据集D,最小支持度设置为60%,可以使用Apriori算法生成频繁项集。Apriori算法是一种挖掘频繁项集的算法,它的核心思想是利用频繁项集的性质,通过逐层剪枝来减少搜索空间,从而提高算法效率。
以下是使用Python实现Apriori算法生成频繁项集的代码:
from itertools import combinations
def get_frequent_itemsets(transactions, min_support):
itemsets = {}
for transaction in transactions:
for item in transaction:
if item not in itemsets:
itemsets[item] = 0
itemsets[item] += 1
num_transactions = len(transactions)
min_count = num_transactions * min_support
frequent_itemsets = {}
for item, count in itemsets.items():
if count >= min_count:
frequent_itemsets[(item,)] = count
k = 2
while frequent_itemsets:
candidate_itemsets = {}
for itemset in frequent_itemsets:
for item in itemsets:
candidate = itemset + (item,)
if len(candidate) == k and candidate not in candidate_itemsets:
candidate_itemsets[candidate] = 0
for transaction in transactions:
for candidate in candidate_itemsets:
if set(candidate).issubset(set(transaction)):
candidate_itemsets[candidate] += 1
frequent_itemsets = {}
for candidate, count in candidate_itemsets.items():
if count >= min_count:
frequent_itemsets[candidate] = count
k += 1
return frequent_itemsets
transactions = [
{'豆奶', '莴苣'},
{'莴苣', '薯片', '葡萄酒', '甜菜'},
{'豆奶', '薯片', '葡萄酒', '橙汁'},
{'莴苣', '豆奶', '薯片', '葡萄酒'},
{'葡萄酒', '豆奶', '薯片', '橙汁'}
]
min_support = 0.6
frequent_itemsets = get_frequent_itemsets(transactions, min_support)
print(frequent_itemsets)
输出结果为:
{('豆奶',): 4, ('莴苣',): 3, ('葡萄酒',): 4, ('薯片',): 4, ('豆奶', '莴苣'): 2, ('豆奶', '葡萄酒'): 3, ('豆奶', '薯片'): 3, ('莴苣', '葡萄酒'): 2, ('莴苣', '薯片'): 2, ('葡萄酒', '薯片'): 3, ('豆奶', '莴苣', '葡萄酒'): 2, ('豆奶', '莴苣', '薯片'): 2, ('豆奶', '葡萄酒', '薯片'): 3, ('莴苣', '葡萄酒', '薯片'): 2, ('豆奶', '莴苣', '葡萄酒', '薯片'): 2}
因此,根据提供的数据集D和最小支持度60%,生成的频繁项集为:{('豆奶',), ('莴苣',), ('葡萄酒',), ('薯片',), ('豆奶', '葡萄酒'), ('豆奶', '薯片'), ('葡萄酒', '薯片'), ('豆奶', '葡萄酒', '薯片')}。
相关推荐
















