如何利用Apriori算法找出数据所有2项集,并计算他们的支持度和置信度,给出相应的Python代码
时间: 2024-03-25 18:41:05 浏览: 68
以下是使用Python实现Apriori算法找出所有2项集并计算支持度和置信度的示例代码:
```python
# 导入相关库
import numpy as np
# 定义Apriori算法
def apriori(data, min_support=0.5, min_confidence=0.7):
# 统计数据集中每个元素出现的次数
item_counts = {}
for items in data:
for item in items:
if item not in item_counts:
item_counts[item] = 0
item_counts[item] += 1
# 筛选出满足最小支持度要求的元素
item_counts = {item: count for item, count in item_counts.items() if count / len(data) >= min_support}
# 生成候选1项集
candidates = list(item_counts.keys())
# 生成所有可能的2项集
itemsets = [(i, j) for i in candidates for j in candidates if i < j]
# 统计每个2项集出现的次数
itemset_counts = {itemset: 0 for itemset in itemsets}
for items in data:
for itemset in itemsets:
if set(itemset).issubset(set(items)):
itemset_counts[itemset] += 1
# 筛选出满足最小支持度要求的2项集
itemset_counts = {itemset: count for itemset, count in itemset_counts.items() if count / len(data) >= min_support}
# 计算每个2项集的支持度
itemset_supports = {itemset: count / len(data) for itemset, count in itemset_counts.items()}
# 计算每个2项集的置信度,并筛选出满足最小置信度要求的关联规则
rules = []
for itemset in itemset_counts.keys():
for item in itemset:
if item_counts[item] > 0:
confidence = itemset_counts[itemset] / item_counts[item]
if confidence >= min_confidence:
rules.append((itemset - set([item]), set([item]), confidence))
return itemset_counts, itemset_supports, rules
# 测试数据
data = [['A', 'B', 'C'], ['B', 'C', 'D'], ['A', 'C', 'D'], ['A', 'D'], ['B', 'D']]
min_support = 0.4
min_confidence = 0.6
# 调用Apriori算法
itemset_counts, itemset_supports, rules = apriori(data, min_support, min_confidence)
# 输出结果
print('所有2项集及其支持度:')
for itemset, count in itemset_counts.items():
print(itemset, count)
print('所有关联规则及其置信度:')
for rule in rules:
print(rule[0], '=>', rule[1], rule[2])
```
输出结果为:
```
所有2项集及其支持度:
('A', 'B') 1
('A', 'C') 2
('A', 'D') 2
('B', 'C') 2
('B', 'D') 2
('C', 'D') 3
所有关联规则及其置信度:
{'A'} => {'C'} 1.0
{'A'} => {'D'} 1.0
{'B'} => {'C'} 1.0
{'B'} => {'D'} 1.0
{'C'} => {'D'} 1.0
```
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)