当前位置:首页 > Python > 正文

Python关联规则实战指南(从零开始掌握Apriori算法与购物篮分析)

在零售、电商和推荐系统中,Python关联规则是一种非常实用的数据挖掘技术。它能帮助我们发现商品之间的隐藏关系,比如“买了尿布的顾客也常常购买啤酒”。本教程将手把手教你使用Apriori算法进行购物篮分析,即使你是编程小白也能轻松上手!

什么是关联规则?

关联规则是用于发现大量数据集中变量之间有趣关系的一种方法。最经典的例子就是超市的购物篮分析:通过分析顾客的购物小票,找出哪些商品经常被一起购买。

核心概念解析

  • 项集(Itemset):一组商品的集合,如 {牛奶, 面包}。
  • 支持度(Support):项集在所有交易中出现的频率。例如,{牛奶, 面包} 出现在 1000 笔交易中的 200 笔,则支持度为 0.2。
  • 置信度(Confidence):规则 X → Y 的可信程度,计算公式为 support(X ∪ Y) / support(X)。
  • 提升度(Lift):衡量规则的相关性,lift > 1 表示正相关,=1 表示独立,<1 表示负相关。
Python关联规则实战指南(从零开始掌握Apriori算法与购物篮分析) Python关联规则 Apriori算法 购物篮分析 频繁项集挖掘 第1张

使用 Python 实现 Apriori 算法

我们将使用 mlxtend 库来实现 Apriori算法。首先安装所需库:

pip install pandas mlxtend

步骤 1:准备交易数据

假设我们有一个超市的交易记录,每行代表一次购物包含的商品:

import pandas as pd# 创建示例数据transactions = [    ['牛奶', '面包', '黄油'],    ['啤酒', '尿布', '牛奶'],    ['牛奶', '面包', '尿布'],    ['啤酒', '面包', '黄油'],    ['牛奶', '面包', '黄油', '尿布']]# 转换为 One-hot 编码格式(mlxtend 要求)from mlxtend.preprocessing import TransactionEncoderte = TransactionEncoder()te_ary = te.fit(transactions).transform(transactions)df = pd.DataFrame(te_ary, columns=te.columns_)print(df)

步骤 2:挖掘频繁项集

使用 Apriori 算法找出支持度大于阈值的项集:

from mlxtend.frequent_patterns import apriori# 设置最小支持度为 0.6(即至少出现在 60% 的交易中)frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)print(frequent_itemsets)

步骤 3:生成关联规则

基于频繁项集生成规则,并筛选高置信度的规则:

from mlxtend.frequent_patterns import association_rules# 生成规则,按置信度排序rules = association_rules(    frequent_itemsets,     metric="confidence",     min_threshold=0.7)# 只显示 antecedents(前件)、consequents(后件)、support、confidence、liftprint(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

结果解读

假设输出如下:

  antecedents consequents  support  confidence  lift0     (牛奶)      (面包)      0.8        1.0     1.25

这表示:当顾客购买了“牛奶”时,有 100% 的概率也会购买“面包”(置信度=1.0),且 lift=1.25 > 1,说明两者正相关。

应用场景与总结

通过本教程,你已经掌握了如何用 Python 进行频繁项集挖掘和关联规则生成。这项技术广泛应用于:

  • 电商平台的商品推荐
  • 超市货架布局优化
  • 交叉销售策略制定

记住,关键参数如 min_supportmin_confidence 需要根据实际业务调整。多尝试不同阈值,才能发现真正有价值的规则!

希望这篇关于 Python关联规则Apriori算法购物篮分析频繁项集挖掘 的教程对你有所帮助!