实现Apriori 算法案例
时间: 2023-12-01 15:06:03 浏览: 81
Apriori 算法是一种常用的关联规则挖掘算法,可以用于发现数据集中项之间的关系。下面是一个简单的实现 Apriori 算法的 Python 代码示例:
```python
def load_data():
"""加载数据集"""
data = [['bread', 'milk', 'vegetable', 'fruit', 'eggs'],
['noodle', 'beef', 'vegetable', 'fruit', 'eggs'],
['bread', 'noodle', 'beef', 'vegetable'],
['bread', 'milk', 'beef', 'vegetable', 'eggs'],
['milk', 'noodle', 'beef', 'vegetable', 'fruit', 'eggs']]
return data
def create_C1(data):
"""创建所有候选项集的集合"""
C1 = set()
for transaction in data:
for item in transaction:
C1.add(frozenset([item]))
return C1
def generate_Fk(Ck, data, min_support):
"""根据候选项集生成频繁项集"""
support_count = {}
for transaction in data:
for item in Ck:
if item.issubset(transaction):
support_count[item] = support_count.get(item, 0) + 1
n = len(data)
Fk = set()
support_data = {}
for item, count in support_count.items():
support = count / n
if support >= min_support:
Fk.add(item)
support_data[item] = support
return Fk, support_data
def generate_Ck(Fk, k):
"""根据频繁项集生成候选项集"""
Ck = set()
for item1 in Fk:
for item2 in Fk:
if len(item1.union(item2)) == k:
Ck.add(item1.union(item2))
return Ck
def apriori(data, min_support):
"""Apriori 算法"""
C1 = create_C1(data)
F1, support_data = generate_Fk(C1, data, min_support)
F = [F1]
k = 2
while len(F[k-2]) > 0:
Ck = generate_Ck(F[k-2], k)
Fk, support_k = generate_Fk(Ck, data, min_support)
support_data.update(support_k)
F.append(Fk)
k += 1
return F, support_data
if __name__ == '__main__':
data = load_data()
F, support_data = apriori(data, 0.5)
print("频繁项集:", F)
print("支持度:", support_data)
```
在这个示例中,我们使用了一个包含 5 个交易的简单数据集。首先,我们创建了所有候选项集的集合,然后根据候选项集生成频繁项集。接着,我们根据频繁项集生成候选项集,并再次生成频繁项集。这个过程一直进行到没有新的频繁项集产生为止。最后,我们输出了所有的频繁项集和支持度。
这是一个简单的 Apriori 算法实现示例,实际应用中可能需要对算法进行优化,例如使用 FP-Growth 算法等。
阅读全文