本关任务:编写 Python 代码实现 Apriori 算法。
时间: 2024-10-12 21:05:05 浏览: 43
Apriori算法python实现含数据集
Apriori 算法是一种用于关联规则挖掘的算法,主要用于市场篮子分析,寻找频繁项集并推导出强关联规则。以下是简单的 Python 实现步骤:
```python
from collections import defaultdict
# 定义支持度阈值和最小项数
min_support = 0.5
min_confidence = 0.7
def apriori(dataset, min_support):
# 初始化频繁项集和候选项集
frequent_itemsets = []
candidate_itemsets = []
# 遍历原始数据集,生成单个元素的频繁项集
for transaction in dataset:
frequent_itemsets.extend([item for item in transaction])
# 将单个元素项集转化为集合形式,并计算支持度
support_count = dict((item, len([t for t in dataset if item in t])) for item in frequent_itemsets)
# 过滤掉支持度小于阈值的项集
frequent_itemsets = [item for item, count in support_count.items() if count / len(dataset) >= min_support]
while frequent_itemsets:
# 从当前频繁项集中生成所有可能的二元组作为候选项集
new_candidate_itemsets = [frozenset.union(a, b) for a in frequent_itemsets for b in frequent_itemsets if a < b]
# 计算每个候选项集的支持度
new_support_count = defaultdict(int)
for transaction in dataset:
for candidate in new_candidate_itemsets:
if candidate.issubset(transaction):
new_support_count[candidate] += 1
# 更新频繁项集列表和候选项集
candidate_itemsets = [candidate for candidate, count in new_support_count.items() if count / len(dataset) >= min_support]
frequent_itemsets = list(set(candidate_itemsets)) # 去除重复项
return frequent_itemsets, candidate_itemsets
# 示例数据集
dataset = [['Milk', 'Bread'], ['Milk', 'Eggs'], ['Milk', 'Bread', 'Diapers'], ['Bread', 'Eggs']]
# 调用 Apriori 函数
result = apriori(dataset, min_support)
print("频繁项集:", result[0])
print("候选项集:", result[1])
阅读全文