能否提供一个Python中使用Apriori算法或者FP-Growth算法实现菜品推荐的关联规则学习示例代码?
时间: 2024-12-18 16:31:44 浏览: 6
Python机器学习关联规则资源(apriori算法、fpgrowth算法)原理讲解
5星 · 资源好评率100%
在Python中,我们可以使用`mlxtend`库中的`apriori`函数来实现Apriori算法,`fpgrowth`函数则用于实现FP-Growth算法。以下是一个简单的例子,假设我们有一个包含用户购买记录的DataFrame,我们将通过这两个算法找出哪些菜品常被一起购买,作为推荐依据。
```python
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, fpgrowth
# 假设这是用户的购买历史数据,每行代表一次购买,列名是菜品ID
transactions = [['A', 'B', 'C'], ['A', 'D'], ['B', 'C', 'E'], ['B', 'D']]
# 将列表转换为TransactionEncoder所需的二维数组
te = TransactionEncoder()
te_ary = te.fit(transactions).transform(transactions)
# 使用Apriori算法
min_support = 0.4 # 设置最小支持度
rules_apriori = apriori(te_ary,
min_support=min_support,
use_colnames=True)
# 输出关联规则
for freq_itemsets, _ in rules_apriori:
for itemset in freq_itemsets:
if itemset[1] == '1': # 只显示支持度为1的规则(频繁项集)
print(f"Items: {itemset[0]}, Support: {itemset[2]}")
# 使用FP-Growth算法
min_support = 0.4
rules_fpgrowth = fpgrowth(te_ary,
support=min_support,
target_items=['A', 'B']) # 我们只关心推荐['A', 'B']相关的规则
# 输出关联规则
for item, freq in rules_fpgrowth.items():
if ('A' in item) and ('B' in item):
print(f"Itemset: {item}, Support: {freq}")
阅读全文