Apriori算法频繁项集产生的代码展示
时间: 2023-12-22 09:03:15 浏览: 82
Apriori算法挖掘频繁项集
好的,以下是Apriori算法频繁项集产生的Python代码示例:
```
def frequent_itemsets_apriori(transactions, support):
itemsets = {}
# 第一次扫描
for transaction in transactions:
for item in transaction:
if frozenset([item]) in itemsets:
itemsets[frozenset([item])] += 1
else:
itemsets[frozenset([item])] = 1
# 只保留支持度超过阈值的项集
itemsets = {itemset: count for itemset, count in itemsets.items() if count >= support}
# 一直迭代直到无法产生更多的频繁项集
k = 2
while itemsets != {}:
itemsets = generate_new_itemsets(itemsets, k)
itemsets = calculate_support(itemsets, transactions, support)
itemsets = {itemset: count for itemset, count in itemsets.items() if count >= support}
k += 1
return itemsets
def generate_new_itemsets(itemsets, k):
new_itemsets = {}
itemset_list = list(itemsets.keys())
# 两两组合产生新的项集
for i in range(len(itemset_list)):
for j in range(i + 1, len(itemset_list)):
itemset1 = itemset_list[i]
itemset2 = itemset_list[j]
if len(itemset1.union(itemset2)) == k:
new_itemset = itemset1.union(itemset2)
new_itemsets[new_itemset] = 0
return new_itemsets
def calculate_support(itemsets, transactions, support):
# 统计项集在事务中出现的次数
for transaction in transactions:
for itemset in itemsets.keys():
if itemset.issubset(transaction):
itemsets[itemset] += 1
return itemsets
```
以上代码实现了Apriori算法,输入参数为数据集和支持度阈值,输出为所有频繁项集。具体实现过程为:首先对数据集进行第一次扫描,统计每个项出现的次数,只保留支持度超过阈值的项集;然后一直迭代直到无法产生更多的频繁项集,每次迭代生成新的项集并统计其出现的次数,再次筛选出支持度超过阈值的项集。最终输出所有频繁项集。
阅读全文