关联规则apriori算法案例
时间: 2023-09-15 15:14:53 浏览: 99
Apriori关联规则算法
5星 · 资源好评率100%
当然,我可以为您提供一个关联规则 Apriori 算法的案例。假设我们有一个超市的销售数据集,包含了顾客购买的商品清单。我们希望通过关联规则挖掘出商品之间的关联性,从而可以进行交叉销售或者促销活动。
首先,我们需要对数据集进行预处理,确保数据格式的正确性。然后,我们可以使用 Apriori 算法来进行关联规则的挖掘。下面是一个示例代码:
```python
# 导入所需的库
from itertools import combinations
from collections import defaultdict
# 定义 Apriori 算法
def apriori(transactions, min_support, min_confidence):
# 统计每个商品的支持度
item_counts = defaultdict(int)
for transaction in transactions:
for item in transaction:
item_counts[item] += 1
# 获取满足最小支持度的商品集合
itemsets = {frozenset([item]): count for item, count in item_counts.items() if count >= min_support}
# 不断扩展商品集合,直到无法进一步扩展
while True:
next_itemsets = {}
for itemset in itemsets.keys():
for item in item_counts.keys():
if item not in itemset:
new_itemset = itemset | frozenset([item])
if new_itemset not in next_itemsets:
next_itemsets[new_itemset] = 0
next_itemsets[new_itemset] += 1
# 过滤掉不满足最小支持度的商品集合
itemsets = {itemset: count for itemset, count in next_itemsets.items() if count >= min_support}
# 如果没有满足最小支持度的商品集合,则停止扩展
if not itemsets:
break
# 根据商品集合生成关联规则
rules = []
for itemset in itemsets.keys():
if len(itemset) > 1:
for item in itemset:
antecedent = frozenset([item])
consequent = itemset - antecedent
support = itemsets[itemset] / len(transactions)
confidence = itemsets[itemset] / itemsets[antecedent]
if confidence >= min_confidence:
rules.append((antecedent, consequent, support, confidence))
return rules
# 示例数据集
transactions = [
['牛奶', '面包', '黄油'],
['牛奶', '黄油'],
['面包', '黄油'],
['牛奶', '面包', '黄油', '鸡蛋'],
['面包', '鸡蛋']
]
# 设置最小支持度和最小置信度
min_support = 0.4
min_confidence = 0.6
# 使用 Apriori 算法挖掘关联规则
rules = apriori(transactions, min_support, min_confidence)
# 打印关联规则
for antecedent, consequent, support, confidence in rules:
print(f"规则:{antecedent} => {consequent}")
print(f"支持度:{support}")
print(f"置信度:{confidence}")
print()
```
以上代码演示了如何使用 Apriori 算法挖掘关联规则。通过对示例数据集进行分析,可以得到商品之间的关联规则,以及各个规则的支持度和置信度。您可以根据自己的数据集和需求进行相应的调整和扩展。希望对您有帮助!
阅读全文