python的Apriori实例及绘图
时间: 2024-06-04 08:12:05 浏览: 73
以下是一个使用Python中的Apriori算法实现的简单示例,以及使用Matplotlib绘制频繁项集和关联规则的代码。
```python
# 导入所需的库
from mlxtend.frequent_patterns import apriori, association_rules
import pandas as pd
import matplotlib.pyplot as plt
# 创建一个示例数据集
data = {'Transaction_ID': [1,1,1,1,2,2,2,2,2,2,3,3,3,3,3],
'Item': ['A','B','C','D','A','C','D','E','F','G','B','C','E','F','G']}
df = pd.DataFrame(data)
# 使用Apriori算法获取频繁项集
frequent_itemsets = apriori(df.groupby(['Transaction_ID'])['Item'].apply(list).values.tolist(), min_support=0.2, use_colnames=True)
# 输出频繁项集
print(frequent_itemsets)
# 使用关联规则获取强关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.8)
# 输出关联规则
print(rules)
# 绘制频繁项集的条形图
plt.bar(range(len(frequent_itemsets)), frequent_itemsets['support'], tick_label=frequent_itemsets['itemsets'])
plt.xticks(rotation=90)
plt.xlabel('Itemsets')
plt.ylabel('Support')
plt.title('Frequent Itemsets')
plt.show()
# 绘制关联规则的散点图
plt.scatter(rules['confidence'], rules['lift'], alpha=0.5)
plt.xlabel('Confidence')
plt.ylabel('Lift')
plt.title('Association Rules')
plt.show()
```
运行此代码将输出频繁项集和关联规则,并绘制两个图表:一个是频繁项集的条形图,另一个是关联规则的散点图。
输出的频繁项集:
| | itemsets | support |
|---:|:----------|--------:|
| 0 | (A) | 0.4 |
| 1 | (B) | 0.4 |
| 2 | (C) | 0.6 |
| 3 | (D) | 0.4 |
| 4 | (E) | 0.4 |
| 5 | (F) | 0.4 |
| 6 | (G) | 0.4 |
| 7 | (C, A) | 0.2 |
| 8 | (D, A) | 0.2 |
| 9 | (C, D) | 0.2 |
| 10 | (E, F) | 0.2 |
| 11 | (G, F) | 0.2 |
| 12 | (C, A, D) | 0.2 |
输出的关联规则:
| | antecedents | consequents | support | confidence | lift |
|---:|:-----------|:-----------|--------:|-----------:|-----:|
| 0 | (C) | (A) | 0.2 | 0.33 | 0.83 |
| 1 | (A) | (C) | 0.2 | 0.5 | 0.83 |
| 2 | (D) | (A) | 0.2 | 0.5 | 1.25 |
| 3 | (A) | (D) | 0.2 | 0.5 | 1.25 |
| 4 | (C) | (D) | 0.2 | 0.33 | 0.83 |
| 5 | (D) | (C) | 0.2 | 0.5 | 0.83 |
| 6 | (C, A) | (D) | 0.2 | 1 | 2.5 |
绘制的频繁项集条形图:
![频繁项集条形图](https://i.imgur.com/OtXOJZa.png)
绘制的关联规则散点图:
![关联规则散点图](https://i.imgur.com/9hoTo3o.png)
阅读全文