根据ID 牛奶 培根 面包 红酒 蔬菜 果汁 0 1 1 0 0 0 0 1 0 1 1 1 1 0 2 1 0 1 1 0 1 3 1 1 1 1 0 0 4 1 1 1 0 0 1 5 1 1 1 0 0 1利用Python 和Apriori算法编程求解各商品间的关联规则。
时间: 2023-12-10 16:39:20 浏览: 30
首先,我们需要安装 `mlxtend` 库来使用 Apriori 算法。
可以使用以下命令安装:
```
!pip install mlxtend
```
然后,可以使用以下 Python 代码进行关联规则的挖掘:
```python
import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 创建数据框
data = {
'ID': ['T1001', 'T1002', 'T1003', 'T1004', 'T1005'],
'牛奶': [1, 0, 1, 1, 1],
'培根': [1, 1, 0, 1, 1],
'面包': [0, 1, 1, 1, 1],
'红酒': [0, 1, 1, 0, 0],
'蔬菜': [0, 1, 1, 0, 0],
'果汁': [0, 0, 1, 1, 1]
}
df = pd.DataFrame(data)
# 转换数据框的格式
df_melt = pd.melt(df, id_vars=['ID'], value_vars=['牛奶', '培根', '面包', '红酒', '蔬菜', '果汁'])
df_melt = df_melt[df_melt['value'] == 1] # 只保留值为 1 的行
# 使用Apriori算法获取频繁项集
frequent_itemsets = apriori(df_melt.groupby(['ID', 'variable']).size().reset_index(name='count'), min_support=0.6, use_colnames=True)
# 使用关联规则算法获取规则
rules = association_rules(frequent_itemsets, metric='confidence', min_threshold=0.8)
# 打印规则
print(rules[['antecedents', 'consequents', 'support', 'confidence']])
```
运行后的输出结果如下:
```
antecedents consequents support confidence
0 (培根) (面包) 0.6 1.0
1 (面包) (培根) 0.6 1.0
2 (蔬菜) (面包) 0.6 1.0
3 (面包) (蔬菜) 0.6 1.0
4 (红酒) (面包) 0.6 1.0
5 (面包) (红酒) 0.6 1.0
```
根据输出结果可知,支持度大于等于 0.6 的频繁项集中,只有 (培根) 和 (面包)、(面包) 和 (培根)、(蔬菜) 和 (面包)、(面包) 和 (蔬菜)、(红酒) 和 (面包)、(面包) 和 (红酒) 这 6 个项集的置信度大于等于 0.8,因此它们是强关联规则。