Apriori算法python示例
时间: 2023-10-12 10:31:43 浏览: 94
好的,以下是一个使用Python实现Apriori算法的示例代码:
```python
# 导入必要的库
import itertools
from collections import defaultdict
# 定义Apriori算法函数
def apriori(transactions, min_support=0.5):
# 获取所有不重复的物品
item_set = set(item for transaction in transactions for item in transaction)
# 计算最小支持度
min_count = len(transactions) * min_support
# 定义字典存储频繁项集
freq_set = defaultdict(int)
# 定义字典存储项集的支持度
item_count = defaultdict(int)
# 遍历所有的事务,计算项集的支持度和频繁项集
for transaction in transactions:
for item in item_set:
if item in transaction:
item_count[item] += 1
for item_set in powerset(transaction):
freq_set[frozenset(item_set)] += 1
# 根据支持度筛选出频繁项集
freq_item_set = set(item_set for item_set in freq_set if freq_set[item_set] >= min_count)
# 定义字典存储关联规则
rules = []
# 遍历所有的频繁项集,生成关联规则
for item_set in freq_item_set:
for item in item_set:
antecedent = item_set - set([item])
consequent = set([item])
confidence = freq_set[item_set] / float(item_count[item])
if confidence >= min_support:
rules.append((antecedent, consequent, confidence))
return freq_item_set, rules
# 定义函数生成所有子集
def powerset(iterable):
s = list(iterable)
return itertools.chain.from_iterable(itertools.combinations(s, r) for r in range(len(s) + 1))
```
这个代码实现了Apriori算法的主要步骤,其输入参数为一个包含所有事务的列表,和一个最小支持度。输出为频繁项集和关联规则。您可以根据自己的数据和需求进行相应的调整。
阅读全文