news 2026/4/29 3:03:33

别再只盯着Apriori了!用Python的mlxtend库5分钟搞定购物篮分析(支持度/置信度/提升度实战)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再只盯着Apriori了!用Python的mlxtend库5分钟搞定购物篮分析(支持度/置信度/提升度实战)

用Python的mlxtend库5分钟实现电商购物篮分析实战

每次走进超市,你是否好奇为什么牙膏总是摆在牙刷旁边?或者为什么啤酒和尿布这两个看似毫不相关的商品会放在同一个促销区?这背后隐藏着一门叫做"购物篮分析"的数据科学技术。作为数据分析师,我们不必深究复杂的算法原理,借助Python的mlxtend库就能快速挖掘这些有趣的商品关联规律。

1. 环境准备与数据理解

在开始之前,确保你已经安装了必要的Python库。打开你的Jupyter Notebook或喜欢的IDE,运行以下命令:

pip install pandas mlxtend

我们将使用一个模拟的电商订单数据集来演示整个过程。这个数据集包含1000条交易记录,每条记录代表一个顾客在一次购物中购买的商品组合。数据格式如下:

订单ID商品列表
1001牛奶,面包,鸡蛋
1002啤酒,尿布,零食
1003面包,牛奶,尿布,啤酒
......

关键概念快速理解

  • 支持度(Support):商品组合出现的频率,如"啤酒和尿布"出现在30%的订单中
  • 置信度(Confidence):购买A商品的顾客中,有多大比例也买了B商品
  • 提升度(Lift):衡量商品关联的强度,大于1表示正相关

2. 数据预处理与频繁项集挖掘

首先导入必要的库并加载数据:

import pandas as pd from mlxtend.preprocessing import TransactionEncoder from mlxtend.frequent_patterns import apriori # 加载数据 df = pd.read_csv('ecommerce_transactions.csv') transactions = df['商品列表'].apply(lambda x: x.split(',')) # 数据编码 te = TransactionEncoder() te_ary = te.fit(transactions).transform(transactions) df_encoded = pd.DataFrame(te_ary, columns=te.columns_) # 挖掘频繁项集 frequent_itemsets = apriori(df_encoded, min_support=0.05, use_colnames=True) print(frequent_itemsets.sort_values('support', ascending=False).head(10))

这段代码会输出支持度最高的商品组合。例如:

支持度商品组合
0.32(牛奶)
0.28(面包)
0.18(牛奶, 面包)
0.15(啤酒)
0.12(尿布)
0.09(啤酒, 尿布)

3. 关联规则生成与筛选

有了频繁项集后,我们可以生成关联规则并计算置信度和提升度:

from mlxtend.frequent_patterns import association_rules # 生成关联规则 rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.5) # 筛选有价值的规则 strong_rules = rules[ (rules['lift'] > 1.2) & (rules['confidence'] > 0.6) ].sort_values('lift', ascending=False) print(strong_rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

输出可能显示如下强关联规则:

前项后项支持度置信度提升度
(啤酒)(尿布)0.090.752.5
(面包)(牛奶)0.180.652.0
(鸡蛋)(面包)0.070.681.8

4. 业务解读与策略制定

数据分析的最终目的是指导业务决策。以下是如何解读和利用这些关联规则的实用建议:

1. 商品陈列优化

  • 将啤酒和尿布摆放在相邻货架或同一促销区
  • 在面包区设置牛奶的交叉销售点

2. 促销策略设计

  • 对购买啤酒的顾客推送尿布优惠券
  • 推出"面包+牛奶"组合优惠套餐

3. 库存管理

  • 当啤酒销量增加时,提前准备更多尿布库存
  • 在早餐食品促销期间,确保面包和牛奶的供应充足

常见陷阱与解决方案

问题1:规则太多,难以筛选有价值的

  • 解决方案:设置更高的最小支持度和置信度阈值
  • 使用提升度作为主要筛选指标,只保留提升度>1.5的规则

问题2:规则看似合理但实际无业务价值

  • 解决方案:结合业务知识人工验证,如"盐和糖"的高关联可能只是基础食品

5. 高级技巧与性能优化

当处理大型数据集时,可以尝试以下优化方法:

# 使用更高效的FP-growth算法 from mlxtend.frequent_patterns import fpgrowth frequent_itemsets_fp = fpgrowth(df_encoded, min_support=0.05, use_colnames=True) # 并行计算加速 rules_parallel = association_rules( frequent_itemsets, metric="lift", min_threshold=1, parallel=True, num_cores=4 ) # 内存优化技巧 te = TransactionEncoder() te_ary = te.fit(transactions).transform(transactions, sparse=True) # 使用稀疏矩阵

参数调优指南

参数推荐范围影响说明
min_support0.01-0.1值越小,规则越多但计算越慢
min_confidence0.5-0.8值越高,规则越可靠但数量越少
min_lift1.2-3.0过滤掉弱关联规则
max_length2-4限制规则中商品的最大数量

在实际电商项目中,我发现将min_support设置为0.02-0.05,min_confidence设置为0.6左右,能够产生既有业务价值又不过于稀疏的规则集。对于新品或高价商品,可以适当降低支持度阈值,因为这些商品本身的购买频率可能较低但关联价值很高。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 3:03:25

数字孪生实战:用Cesium的Cartesian3向量API搞定三维空间中的常见几何计算

数字孪生实战:用Cesium的Cartesian3向量API搞定三维空间中的常见几何计算 在数字孪生项目中,三维空间中的几何计算是构建虚拟世界与现实世界精准映射的核心技术。无论是模拟设备移动轨迹、计算传感器覆盖范围,还是判断物体间的方位关系&#…

作者头像 李华
网站建设 2026/4/29 3:01:11

推荐两个windows办公神级软件,用过的都说好!

聊一聊日常办公过程中,与数据打交道是难免的。与数据和表格打交道,工具是避不可少的。今天给大家分享2款excel表格小工具。希望能解决你日常办公中的一些小问题。软件介绍1.Excel批量复制软件软件非常简单,可以复制整行标题,可以复…

作者头像 李华
网站建设 2026/4/29 2:53:22

Kenbond 1020:高性能导热双面胶带,国产替代的卓越之选

湖南肯瑟高分子新材料有限公司:核心产品Kensflow 2380 石墨基导热相变片Kensflow 2360 铝箔基导热相变片Kensflow 2330 PI膜导热相变片Kentherm 170 陶瓷基导热相变绝缘片Kenbond 1001 导热双面胶带Kenbond 1020 导热双面胶带http://www.kenseer.com 13873106035 李…

作者头像 李华
网站建设 2026/4/29 2:52:21

NEO-F10N-00B,实现米级精度并提供安全GNSS的无线模块

简介今天我要向大家介绍的是 u-blox 的无线模块——NEO-F10N-00B。它基于 u-blox F10 双频 GNSS 技术,利用 L1/L5 频段并采用专有的双频多径抑制技术,在城市环境中能够提供可靠的米级定位精度。该模块具备卓越的射频抗干扰能力,支持安全启动、…

作者头像 李华
网站建设 2026/4/29 2:46:25

无人机巡检光伏板深度学习故障检测系统实现【附代码】

✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。 ✅ 如需沟通交流,扫描文章底部二维码。(1)光伏板红外图像数据集构建与预处理:针对油田分布…

作者头像 李华