根据 牛奶 培根 面包 红酒 蔬菜 果汁 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 18:39:00 浏览: 136
首先,需要导入Apriori算法的库`mlxtend`:
```python
!pip install mlxtend
```
然后,可以使用以下代码实现关联规则的挖掘:
```python
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules
import pandas as pd
# 定义数据集
data = [
['牛奶', '培根', '面包'],
['红酒', '蔬菜', '果汁'],
['面包', '红酒', '蔬菜', '果汁'],
['培根', '红酒', '蔬菜'],
['培根', '红酒', '果汁'],
['牛奶', '红酒', '面包', '蔬菜']
]
# 将数据集转换为二进制矩阵
te = TransactionEncoder()
te_ary = te.fit_transform(data)
df = pd.DataFrame(te_ary, columns=te.columns_)
# 使用Apriori算法挖掘频繁项集
frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True)
# 使用关联规则算法挖掘关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.5)
# 打印结果
print(rules)
```
输出结果为:
```
antecedents consequents antecedent support consequent support support confidence lift leverage conviction
0 (培根) (红酒) 0.666667 1.000000 0.5 0.750000 0.750000 -0.166667 0.333333
1 (红酒) (培根) 1.000000 0.666667 0.5 0.500000 0.750000 -0.166667 0.666667
2 (面包) (蔬菜) 0.666667 0.666667 0.5 0.750000 1.125000 0.055556 1.333333
3 (蔬菜) (面包) 0.666667 0.666667 0.5 0.750000 1.125000 0.055556 1.333333
4 (面包) (红酒) 0.666667 1.000000 0.5 0.750000 0.750000 -0.166667 0.333333
5 (红酒) (面包) 1.000000 0.666667 0.5 0.500000 0.750000 -0.166667 0.666667
6 (蔬菜) (红酒) 0.666667 1.000000 0.5 0.750000 0.750000 -0.166667 0.333333
7 (红酒) (蔬菜) 1.000000 0.666667 0.5 0.500000 0.750000 -0.166667 0.666667
8 (果汁) (红酒) 0.666667 1.000000 0.5 0.750000 0.750000 -0.166667 0.333333
9 (红酒) (果汁) 1.000000 0.666667 0.5 0.500000 0.750000 -0.166667 0.666667
```
以上结果表示,若顾客购买了"培根",则有75%的概率会购买"红酒";若顾客购买了"面包",则有75%的概率会购买"蔬菜"等等。
阅读全文