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

别再死记硬背Apriori了!用Python手把手带你跑通超市购物篮分析(附完整代码和数据集)

从超市购物篮到商业洞察Python实战Apriori算法全流程解析走进任何一家现代超市货架上的商品摆放绝非随意为之。当你在购买啤酒时顺手拿了一袋薯片或是选购婴儿奶粉时带上了尿不湿这些看似偶然的消费行为背后隐藏着值得挖掘的关联规律。本文将带你用Python实现经典的Apriori算法从原始交易数据中自动发现这些有价值的商品组合规律。1. 关联规则挖掘的商业价值啤酒与尿布的故事早已成为零售行业的经典案例——沃尔玛通过数据分析发现每周五晚上购买尿布的年轻父亲们经常会顺便购买啤酒。这一发现直接影响了商品陈列策略将啤酒和尿布摆放在相邻货架后两者的销量都得到了显著提升。关联规则挖掘的核心是发现数据中的如果...那么...关系。在零售场景中这意味着商品组合推荐发现经常被同时购买的商品组合交叉销售机会识别可以捆绑销售的商品对库存优化预测一种商品缺货可能影响的其他商品销售促销策略设计更有针对性的折扣和优惠券关联规则通常用三个指标衡量指标计算公式商业意义支持度P(A∩B)组合出现的频率置信度P(B|A)购买A后购买B的概率提升度P(B|A)/P(B)规则的有效性提示实际应用中支持度阈值设置过高可能错过有价值但低频的组合过低则会产生大量无意义规则。2. Apriori算法原理精要Apriori算法基于一个简单但强大的先验原理如果一个项集是频繁的那么它的所有子集也一定是频繁的。这一性质大幅减少了需要计算的候选项集数量。算法流程可分为四个关键步骤扫描交易数据统计每个单项的支持度筛选出频繁1项集(L1)基于L1生成候选2项集(C2)再次扫描数据计算支持度得到L2迭代生成更高阶候选项集直到无法生成新的频繁项集从频繁项集生成关联规则计算置信度等指标用Python实现时我们需要特别注意数据结构的效率选择。以下是核心步骤的代码框架def generate_candidates(prev_freq_items, k): 生成k项候选集 candidates set() # 通过合并(k-1)项集生成k项候选集 for item1 in prev_freq_items: for item2 in prev_freq_items: if len(item1.union(item2)) k: candidates.add(item1.union(item2)) return candidates def calculate_support(itemset, transactions): 计算项集支持度 count 0 for transaction in transactions: if itemset.issubset(transaction): count 1 return count / len(transactions)3. 实战超市购物篮分析让我们用一个真实的超市交易数据集演示完整流程。数据集包含9835条交易记录涉及169种商品。3.1 数据准备与预处理首先加载并探索数据import pandas as pd from mlxtend.preprocessing import TransactionEncoder # 加载数据集 df pd.read_csv(groceries.csv) transactions df[items].apply(lambda x: x.split(,)) # 转换为one-hot编码格式 te TransactionEncoder() te_ary te.fit(transactions).transform(transactions) df_encoded pd.DataFrame(te_ary, columnste.columns_) print(f数据集形状: {df_encoded.shape}) print(前5条交易示例:) print(df.head())数据预处理的关键点处理缺失值和异常数据统一商品名称格式大小写、缩写等考虑时间维度周末/工作日、季节等3.2 发现频繁项集使用mlxtend库实现Apriori算法from mlxtend.frequent_patterns import apriori # 挖掘频繁项集最小支持度2% frequent_itemsets apriori(df_encoded, min_support0.02, use_colnamesTrue) frequent_itemsets[length] frequent_itemsets[itemsets].apply(lambda x: len(x)) # 查看结果 print(frequent_itemsets.sort_values(bysupport, ascendingFalse).head(10))输出示例支持度项集长度0.075(全脂牛奶)10.059(蔬菜)10.052(面包卷)10.048(酸奶)10.043(苏打水)13.3 生成关联规则从频繁项集中提取有意义的规则from mlxtend.frequent_patterns import association_rules # 生成关联规则最小置信度30% rules association_rules(frequent_itemsets, metricconfidence, min_threshold0.3) # 筛选提升度1的有效规则 effective_rules rules[rules[lift] 1].sort_values(bylift, ascendingFalse) print(effective_rules[[antecedents, consequents, support, confidence, lift]].head())典型规则示例购买黄油和面粉的客户有62%的概率会购买鸡蛋提升度2.1购买酸奶的客户有41%的概率会购买水果提升度1.7购买啤酒的客户有38%的概率会购买薯片提升度1.94. 规则解读与商业应用获得关联规则后关键在于如何将其转化为 actionable insights。以下是一些典型应用场景商品陈列优化将高提升度的商品组合摆放在相邻位置在相关商品区设置引导标识避免将替代品负相关商品放在一起促销策略设计对前项商品提供折扣刺激后项商品销售设计捆绑销售套餐个性化推荐和优惠券发放库存管理改进关联商品保持同步库存预测一种商品缺货可能影响的连带销售优化补货周期和批量实际案例中一家连锁药店通过关联分析发现购买感冒药的顾客常同时购买纸巾和维生素C购买婴儿奶粉的顾客有35%会购买尿布湿巾购买血压药的老年顾客常购买低盐食品基于这些发现他们调整了店面布局和促销策略六个月内交叉销售额提升了22%。5. 进阶技巧与优化建议5.1 算法优化策略原始Apriori算法需要多次扫描数据库当数据量大时效率较低。可以考虑以下优化FP-Growth算法采用模式增长方式避免生成候选项集并行计算利用多核CPU或分布式计算框架采样技术对大数据集先采样再分析# 使用FP-Growth算法示例 from mlxtend.frequent_patterns import fpgrowth frequent_itemsets_fp fpgrowth(df_encoded, min_support0.02, use_colnamesTrue)5.2 参数调优方法关键参数对结果影响显著参数影响调整建议最小支持度控制规则普遍性从较高值开始逐步降低最小置信度控制规则可靠性根据业务需求设定提升度阈值过滤无效规则通常设置为1建议采用网格搜索寻找最优参数组合param_grid { min_support: [0.01, 0.02, 0.03], min_confidence: [0.2, 0.3, 0.4] } results [] for support in param_grid[min_support]: for confidence in param_grid[min_confidence]: freq_items apriori(df_encoded, min_supportsupport, use_colnamesTrue) rules association_rules(freq_items, metricconfidence, min_thresholdconfidence) effective_rules rules[rules[lift] 1] results.append({ support: support, confidence: confidence, rule_count: len(effective_rules), avg_lift: effective_rules[lift].mean() })5.3 可视化分析技巧良好的可视化能更直观地展示规则关系import networkx as nx import matplotlib.pyplot as plt # 创建规则关系图 G nx.DiGraph() for _, row in effective_rules.iterrows(): G.add_edge(,.join(row[antecedents]), ,.join(row[consequents]), weightrow[lift]) # 绘制图形 plt.figure(figsize(12, 8)) pos nx.spring_layout(G) nx.draw(G, pos, with_labelsTrue, node_size3000, edge_colorgray, width[d[weight]*0.5 for (u,v,d) in G.edges(dataTrue)]) plt.title(商品关联规则网络, fontsize15) plt.show()6. 实际应用中的挑战与解决方案6.1 数据质量问题稀疏性问题零售数据通常非常稀疏大多数商品组合极少出现解决方案适当降低支持度阈值或使用加权支持度数据偏差促销活动可能导致临时性关联解决方案排除促销期数据或单独分析6.2 规则解释性虚假关联两件商品可能因为第三方因素如季节而同时出现解决方案引入时间变量或进行因果分析规则过载可能产生大量琐碎规则解决方案设置合理的兴趣度指标阈值6.3 实时性要求传统Apriori算法不适合流数据场景。可以考虑增量更新只重新计算受影响的部分规则滑动窗口仅分析最近一段时间的数据近似算法牺牲一定精度换取速度# 增量更新示例 def incremental_apriori(new_transactions, prev_itemsets, min_support): # 更新支持度计数 updated_itemsets prev_itemsets.copy() for itemset in updated_itemsets: for transaction in new_transactions: if itemset.issubset(transaction): updated_itemsets[itemset] 1 # 筛选仍满足支持度的项集 total_transactions len(transactions) len(new_transactions) return {k:v for k,v in updated_itemsets.items() if v/total_transactions min_support}7. 扩展应用场景关联规则挖掘不仅限于零售行业在其他领域同样有广泛应用医疗健康药物组合效果分析病症与检查项目的关联治疗方案与疗效关系网络安全异常行为模式检测攻击步骤关联分析安全事件预测金融服务金融产品交叉销售欺诈交易模式识别客户生命周期阶段分析以医疗为例一家医院通过分析患者检查记录发现进行X光检查的患者有68%会进行血液检查心电图和血压检测经常同时要求某些药物组合可能增加副作用风险这些发现帮助他们优化了检查流程和用药指南。

相关文章:

别再死记硬背Apriori了!用Python手把手带你跑通超市购物篮分析(附完整代码和数据集)

从超市购物篮到商业洞察:Python实战Apriori算法全流程解析 走进任何一家现代超市,货架上的商品摆放绝非随意为之。当你在购买啤酒时顺手拿了一袋薯片,或是选购婴儿奶粉时带上了尿不湿,这些看似偶然的消费行为背后,隐藏…...

Qwen3-4B-Instruct部署案例:混合精度推理(AMP)开启与吞吐量提升实测

Qwen3-4B-Instruct部署案例:混合精度推理(AMP)开启与吞吐量提升实测 1. 模型概述 Qwen3-4B-Instruct-2507是Qwen3系列的端侧/轻量旗舰模型,专为高效推理和实际应用场景优化。该模型原生支持256K token(约50万字&…...

python代码:基于DDPG(深度确定性梯度策略)算法的售电公司竞价策略研究

python代码:基于DDPG(深度确定性梯度策略)算法的售电公司竞价策略研究 关键词:DDPG 算法 深度强化学习 电力市场 发电商 竞价 说明文档:完美复现英文文档,可找我看文档 主要内容: 代码主要…...

SCons构建MDK工程翻车实录:从‘No module named building’到完美运行的踩坑全指南

SCons构建MDK工程实战:从报错排查到工程定制的完整指南 第一次接触SCons构建MDK工程时,那种从满屏红色报错到最终看到"Build Complete"的成就感,至今记忆犹新。作为替代传统IDE手动配置的自动化方案,SCons确实能显著提升…...

Jetson Nano新手必看:jtop命令报错‘jetson_stats.service not active’的完整解决流程

Jetson Nano新手必看:jtop命令报错‘jetson_stats.service not active’的完整解决流程 刚拿到Jetson Nano的开发者,往往迫不及待想体验这款强大边缘计算设备的性能监控功能。作为官方推荐的系统监控工具,jtop以其直观的界面和丰富的参数展示…...

避坑指南:GD32F470的SPI FIFO与DMA刷屏时,为何屏幕会闪烁或花屏?

GD32F470 SPI DMA刷屏异常全解析:从FIFO机制到数据对齐的深度避坑指南 当你在GD32F470上实现SPI DMA刷屏时,是否遇到过屏幕闪烁、花屏或数据错位的诡异现象?这背后往往隐藏着SPI FIFO机制、DMA传输边界、数据宽度匹配等关键技术细节。本文将带…...

Windows服务器修改默认远程端口3389

修改默认远程访问端口(如Windows的RDP,默认端口3389 )可以增强系统安全性,通过避免自动化攻击和恶意扫描针对常用端口的攻击,从而保护服务器或服务免受未授权访问的风险服务器系统:Windows Server 2022 修改…...

【windows命令-网络命令、系统管理命令】

windows命令-网络命令、系统管理命令一、网络命令二、系统管理命令三、其他一、网络命令 1.ipconfig:查看本机IP信息(ipconfig /all:完整信息(MAC、DNS、DHCP等)、ipconfig /release:释放当前IP、ipconfig…...

回顾AQATrack模型遇到的问题

1.环境 (1)如果只是pytorch的版本是CPU,直接在这个环境里面去修改那个版本改为GPU就可以了,不用整个环境去打包,打包环境进行迁移的灵感💡来源于deepseek的离谱建议 具体操作步骤: 确认 CUDA …...

2026年怎么从培训学员反馈辨真假?这3个判断标准很实用

"做HR快6年,年年牵头做内部培训,每次收完学员反馈,我都头疼——哪是真满意哪是随便应付交差?以前踩过好多坑,白瞎培训预算不说,改方案也改不到点子上。今天把我摸出来的3个判断标准放这,看…...

记录生活&学习Day15深度强化学习第十六集:Advantage Actor-Critic(A2C)

生活我让Y把我拉黑了,我们应该结束了,心里好难受,觉得很可惜,不知道怎么办...五一我想去找L但是她已经拒绝我三次了,那就不去了吧...我现在不知道怎么办了,什么也做不下去。...

5款主流SaaS建站平台实测横评:兜客互动凭借全链路服务与高性价比,成为中小企业数字化入门首选

# 中小企业如何选对数字化“第一站”?一场关乎效率与成本的关键抉择在数字经济加速渗透的今天,一个官网、一个小程序、一场微信营销活动,已成为中小企业触达客户的基本配置。然而面对市面上琳琅满目的SaaS建站平台,功能重叠、价格…...

5分钟搭建专属OCR服务:cv_resnet18_ocr-detection部署与使用详解

5分钟搭建专属OCR服务:cv_resnet18_ocr-detection部署与使用详解 1. 为什么选择cv_resnet18_ocr-detection 在日常工作和生活中,我们经常需要从图片中提取文字信息。无论是处理发票、识别证件,还是分析商品包装,传统的手动录入方…...

Weka机器学习实战:鸢尾花分类完整教程

1. 使用Weka完成多类别分类项目的完整指南Weka作为一款开源的机器学习工作台,以其直观的图形界面和丰富的算法库,成为了许多数据科学初学者的首选工具。今天我将通过经典的鸢尾花分类案例,带大家走完一个完整的机器学习项目流程 - 从数据加载…...

别再死记硬背了!一张图看懂DDR到DDR4内存的演变史(附关键参数对比)

从DDR到DDR4:内存技术的进化图谱与设计哲学 在计算机硬件发展的长河中,内存技术的迭代如同一部微缩的科技史诗。从2000年DDR标准的诞生到如今DDR4的普及,每一次升级都不仅仅是数字的跃进,更是工程智慧的结晶。对于硬件爱好者、嵌入…...

BitNet b1.58-2B-4T-gguf部署教程:SELinux严格模式下服务权限配置指南

BitNet b1.58-2B-4T-gguf部署教程:SELinux严格模式下服务权限配置指南 1. 项目概述 BitNet b1.58-2B-4T-gguf是一款极致高效的1.58-bit量化开源大模型,采用独特的权重三值化技术(-1, 0, 1),平均仅需1.58 bit存储每个…...

长芯微LDC2654完全P2P替代LTC2654,是一款具有±4LSB(最大值)INL、10ppm/℃内部温度系数的16位4通道DAC

概述 LDC2654是一款具有4LSB(最大值)INL、10ppm/℃(最大值)内部温度系数的16位4通道DAC。LDC2654具有内置的高性能、轨至轨输出缓冲器,并保证具有单调性。LDC2654具有一个2.5V的全标度输出和集成基准,并采用4.5V至5.5V的单电源工作。每个DAC也可以采用一…...

C 盘突然爆满?一次彻底排查与迁移实战:从仅剩 12GB 到释放到 46GB

前言很多人都有一个误区: “软件安装到了 D 盘,C 盘就不会继续变大。”我之前也是这么认为的。 结果实际使用一段时间后,C 盘空间还是一路被吃掉,最后只剩下 12GB 左右,已经开始明显影响系统流畅度和开发环境使用。这次…...

爆火的“养马”是什么?Hermes Agent 全面解析+一键部署实操

前言:最近AI圈“养马”热潮席卷而来,不少开发者调侃“从养虾到养马,AI智能体迭代太快”。这里的“马”并非奢侈品爱马仕,而是美国Nous Research团队研发的开源AI智能体——Hermes Agent,“养马”就是搭建、调试并使用这…...

逆向知乎x-zse-96时,我踩过的那些‘环境检测’坑:从Canvas到Window原型链

逆向知乎x-zse-96时,我踩过的那些‘环境检测’坑:从Canvas到Window原型链 在JS逆向工程领域,知乎的x-zse-96参数加密一直以其复杂的环境检测机制闻名。许多开发者在成功提取核心加密逻辑后,往往会在Node.js环境中遭遇各种难以调试…...

去哪个嵌入式培训机构学习比较好

在郑州嵌入式培训领域,结合课程体系、师资实力、实战项目、就业保障四大核心维度,整理出2026年优质机构参考榜,以下是详细对比,供嵌入式学习者参考(数据真实可查,无夸大)。1. 参考依据&#xf…...

【5G Modem】从协议栈到天线阵列:揭秘5G Modem的完整架构与协同设计

1. 5G Modem的架构全景图 当你用手机刷视频、打游戏时,背后有个"隐形交通指挥官"在默默工作——它就是5G Modem。这个比硬币还小的芯片,内部却像一座精密的现代城市:协议栈是交通法规,基带处理器是调度中心,…...

x86-64数据传送指令精解

仅用于个人复习计算机基础,一、核心概览这份文档的核心是讲解如何在不同位置(寄存器、内存)之间移动数据,以及移动时如何处理数据的大小和符号问题。关键在于理解 “数据大小” 和 “符号扩展/零扩展” 这两个概念。二、通用数据传…...

在线数据库建模工具dbdiagram.io - 学习

在线数据库建模工具dbdiagram.io - 创建ER图 工具在线网址:https://dbdiagram.io/home 说明文档网址:https://dbml.dbdiagram.io/docs/ 创建ER图: 1、打开在线网址:https://dbdiagram.io/home,点下图红色的创建图表 。…...

用YOLOv3+ReID模型,手把手教你搭建一个简易的跨摄像头行人追踪系统(附完整代码)

基于YOLOv3与ReID模型的跨摄像头行人追踪系统实战指南 1. 系统架构与技术选型 跨摄像头行人追踪系统主要由两大核心模块构成:目标检测模块和行人重识别模块。YOLOv3作为当前最先进的目标检测算法之一,以其出色的实时性和准确性成为本系统的首选检测框架。…...

AzurLaneAutoScript:7x24小时不间断的碧蓝航线全自动管家

AzurLaneAutoScript:7x24小时不间断的碧蓝航线全自动管家 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 碧蓝航…...

实战案例分享:如何用RexUniNLU零样本处理法律合同文本

实战案例分享:如何用RexUniNLU零样本处理法律合同文本 1. 引言 1.1 法律合同处理的现实困境 想象一下,你是一家公司的法务人员,每天需要审阅几十份合同。这些合同来自不同的供应商、客户和合作伙伴,格式各异,内容繁…...

EMQX MQTT 服务器部署与配置指南

1. 简介 EMQX 是一款大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器。它支持千万级并发连接,是构建物联网(IoT)平台的首选 MQTT Broker 之一。本文档将详细指导如何在 Linux 云服务器上安装、配置并加固 EMQX 服务器。 2. 环境准备与前置条件 2.1 服务器…...

告别‘test-keys’:手把手教你修改AOSP 9.0的Build Fingerprint,绕过App环境检测

深度定制Android系统指纹:从原理到实战绕过环境检测 在Android生态中,系统指纹(Build Fingerprint)就像设备的身份证,不仅标识着系统版本信息,还隐含着编译类型等关键属性。许多金融类、游戏类应用会通过检…...

别再手动改配置了!用FRP v0.61.0的Web仪表盘,图形化搞定内网穿透

FRP v0.61.0 Web仪表盘:可视化内网穿透管理新体验 每次修改配置文件都要重启服务?还在用命令行查看连接状态?FRP v0.61.0的Web仪表盘功能将彻底改变你的内网穿透管理方式。这个被许多用户忽略的"隐藏功能",实际上能大幅…...