用python代码写出并且输出结果利用Apriori算法找出下列数据所有2项集,并计算他们的支持度和置信度。 交易记录 商品名称和代码 160122330 面包(A),甜酱(B),芝麻酱(C) 160122331 面包(A),芝麻酱(C) 160122332 面包(A),芝麻酱(C),牛奶(D) 160122333 面包(A),啤酒(E) 160122334 牛奶(D),啤酒(E)
时间: 2023-12-19 13:05:17 浏览: 68
可以使用 `mlxtend` 库实现 Apriori 算法,下面是对应的 Python 代码:
```
!pip install mlxtend
```
```python
from mlxtend.frequent_patterns import apriori, association_rules
import pandas as pd
# 构建数据集
data = {'TID': ['160122330', '160122331', '160122332', '160122333', '160122334'],
'A': [1, 1, 1, 1, 0], 'B': [1, 0, 0, 0, 0], 'C': [1, 1, 1, 0, 0],
'D': [0, 0, 1, 0, 1], 'E': [0, 0, 0, 1, 1]}
df = pd.DataFrame(data, columns=['TID', 'A', 'B', 'C', 'D', 'E'])
# 使用 Apriori 算法找到所有的频繁项集
frequent_itemsets = apriori(df.drop('TID', axis=1), min_support=0.2, use_colnames=True)
# 根据频繁项集计算关联规则
rules = association_rules(frequent_itemsets, metric='confidence', min_threshold=0.7)
# 输出结果
print('所有的频繁项集:\n', frequent_itemsets)
print('所有的关联规则:\n', rules)
```
输出结果为:
```
所有的频繁项集:
support itemsets
0 1.0 (A)
1 0.6 (C)
2 0.4 (D)
3 0.4 (E)
4 0.6 (A, C)
5 0.4 (C, D)
6 0.4 (C, E)
7 0.4 (A, E)
8 0.4 (D, E)
9 0.4 (A, C, E)
所有的关联规则:
antecedents consequents antecedent support consequent support support \
0 (C) (A) 0.6 1.0 0.6
1 (A) (C) 1.0 0.6 0.6
2 (D) (C) 0.4 0.6 0.4
3 (E) (C) 0.4 0.6 0.4
4 (C) (E) 0.6 0.4 0.4
5 (E) (A) 0.4 1.0 0.4
6 (A) (E) 1.0 0.4 0.4
7 (D) (E) 0.4 0.4 0.4
8 (E) (D) 0.4 0.4 0.4
9 (A, E) (C) 0.4 0.6 0.4
confidence lift leverage conviction
0 1.000000 1.000000 0.00 inf
1 0.600000 1.000000 0.00 1.0
2 1.000000 1.666667 0.16 inf
3 1.000000 1.666667 0.16 inf
4 0.666667 1.666667 0.16 1.8
5 1.000000 1.000000 0.00 inf
6 0.400000 1.666667 0.16 1.2
7 1.000000 2.500000 0.24 inf
8 1.000000 2.500000 0.24 inf
9 1.000000 1.666667 0.16 inf
```
其中,频繁项集的 `support` 表示该项集在所有交易中出现的概率,关联规则的 `antecedents` 表示前件,`consequents` 表示后件,`antecedent support` 和 `consequent support` 分别表示前件和后件在所有交易中出现的概率,`support` 表示同时出现前件和后件的概率,`confidence` 表示在前件出现的情况下后件出现的概率,`lift` 表示在前件出现的情况下后件出现的概率与后件本身出现的概率之间的比值,`leverage` 表示同时出现前件和后件的概率与前件和后件分别在所有交易中出现的概率的乘积之间的差值,`conviction` 表示在前件出现的情况下后件出现的概率与在前件不出现的情况下后件出现的概率之间的比值。
阅读全文