关联规则挖掘实战:从布尔数据到Apriori算法在线闯关

发布时间:2026/7/13 16:16:17

关联规则挖掘实战:从布尔数据到Apriori算法在线闯关
1. 关联规则挖掘入门从购物篮到布尔数据第一次听说关联规则挖掘时我正盯着超市收银台旁的货架发呆。为什么啤酒和尿布总放在一起后来才知道这是数据挖掘领域的经典案例——通过分析顾客购物篮中的商品组合发现买尿布的爸爸们常顺手拿啤酒的隐藏规律。这种发现商品间关联性的技术就是我们要探讨的关联规则挖掘。关联规则的核心是找出形如如果A被购买那么B也可能被购买的规律。在技术实现上我们需要两个关键指标支持度Support规则中所有商品同时出现的交易比例。比如100笔交易中有30笔同时包含牛奶和面包则规则牛奶→面包的支持度为30%置信度Confidence当商品A出现时商品B也出现的条件概率。若包含牛奶的交易共50笔其中30笔也含面包则置信度为30/5060%实际应用中我们常用布尔数据集表示交易记录。就像这样一张表格交易ID牛奶面包啤酒尿布111002101130100其中1表示购买0表示未购买。这种二值化表示正是关联规则挖掘的基础数据结构。我曾用Python的pandas处理过类似数据集读取和预处理代码非常简单import pandas as pd # 读取Excel格式的布尔数据集 data pd.read_excel(market_basket.xlsx) # 查看前5行数据 print(data.head())2. 一对一关联规则实战手动计算支持度与置信度让我们用具体案例理解一对一关联规则的计算。假设有以下布尔数据集A/B/C代表三种商品ABC110011100111计算规则A→B的支持度和置信度支持度计算总交易数4笔同时满足A1且B1的交易第1、4行 → 2笔支持度 2/4 0.5置信度计算A1的交易第1、3、4行 → 3笔其中B也1的交易第1、4行 → 2笔置信度 2/3 ≈ 0.67用Python实现这个计算过程def calculate_rule(df, antecedent, consequent): # 计算前件和后件同时出现的次数 joint_count len(df[(df[antecedent]1) (df[consequent]1)]) # 计算前件出现的次数 antecedent_count len(df[df[antecedent]1]) # 总交易数 total len(df) support joint_count / total confidence joint_count / antecedent_count if antecedent_count0 else 0 return support, confidence # 示例调用 support, confidence calculate_rule(data, A, B) print(f规则 A→B 的支持度: {support:.2f}, 置信度: {confidence:.2f})实际项目中我遇到过几个常见坑点数据稀疏性当商品组合出现次数极少时计算出的置信度可能虚高。建议设置最小支持度阈值过滤噪声方向敏感性规则A→B和B→A的支持度相同但置信度可能差异很大0除问题当前件从未出现时置信度计算会报错需要增加判断条件3. 多对一关联规则与Apriori算法当规则前件包含多个商品时就进入多对一关联规则的领域。比如规则牛奶,面包→啤酒表示同时购买牛奶和面包的顾客很可能也买啤酒。这类规则的挖掘面临组合爆炸问题——n种商品可能产生2ⁿ-1种组合。Apriori算法通过向下闭包性原理巧妙解决这个问题如果一个项集不频繁它的所有超集也不频繁先找出所有频繁1项集然后组合生成候选2项集筛选满足最小支持度的迭代直到不能再生成更大的频繁项集我用Python实现过Apriori的核心逻辑from itertools import combinations def apriori(df, min_support0.1): items df.columns freq_itemsets [] # 生成候选1项集 candidates [{item} for item in items] k 1 while candidates: # 计算支持度 counts [] for itemset in candidates: mask df[list(itemset)].all(axis1) support mask.sum() / len(df) counts.append((itemset, support)) # 筛选频繁项集 freq [itemset for itemset, sup in counts if sup min_support] freq_itemsets.extend(freq) # 生成下一轮候选 candidates set() for i in range(len(freq)): for j in range(i1, len(freq)): new_candidate freq[i].union(freq[j]) if len(new_candidate) k1: candidates.add(frozenset(new_candidate)) candidates [set(c) for c in candidates] k 1 return freq_itemsets实际应用中我们常用现成的mlxtend库快速实现from mlxtend.frequent_patterns import apriori from mlxtend.frequent_patterns import association_rules # 挖掘频繁项集 freq_items apriori(data, min_support0.2, use_colnamesTrue) # 生成关联规则 rules association_rules(freq_items, metricconfidence, min_threshold0.5) print(rules[[antecedents,consequents,support,confidence]])输出示例可能如下antecedents consequents support confidence 0 (牛奶) (面包) 0.50 0.666667 1 (面包) (牛奶) 0.50 1.000000 2 (啤酒) (尿布) 0.75 0.8571434. 实战闯关从理论到代码实现现在让我们完成一个完整的闯关任务。给定以下布尔数据集存储在test12.xlsx中ABC110011100111任务要求计算规则A→B的支持度(sp1)和置信度(co1)计算规则A,B→C的支持度(sp2)和置信度(co2)完整解决方案import pandas as pd def calculate_metrics(): # 读取数据 data pd.read_excel(test12.xlsx) # 计算A→B AB len(data[(data[A]1) (data[B]1)]) A len(data[data[A]1]) sp1 AB / len(data) co1 AB / A if A0 else 0 # 计算A,B→C ABC len(data[(data[A]1) (data[B]1) (data[C]1)]) AB len(data[(data[A]1) (data[B]1)]) sp2 ABC / len(data) co2 ABC / AB if AB0 else 0 return sp1, co1, sp2, co2 # 测试输出 sp1, co1, sp2, co2 calculate_metrics() print(fA→B: 支持度{sp1:.2f}, 置信度{co1:.2f}) print(fA,B→C: 支持度{sp2:.2f}, 置信度{co2:.2f})在真实业务场景中关联规则挖掘有几个实用技巧数据预处理对高基数商品如数万种SKU需要先进行类目聚合结果筛选除了支持度和置信度可以添加提升度(Lift)指标衡量规则的实际价值可视化分析用网络图展示商品关联关系便于业务人员理解我曾用Plotly实现过关联规则可视化import plotly.graph_objects as go def plot_rules(rules): fig go.Figure() # 添加节点 all_items set() for ante in rules[antecedents]: all_items.update(ante) for cons in rules[consequents]: all_items.update(cons) # 添加边 for _, row in rules.iterrows(): fig.add_trace(go.Scatter( x[list(row[antecedents])[0], list(row[consequents])[0]], y[1, 1], modelinesmarkers, linedict(widthrow[support]*10), markerdict(sizerow[confidence]*20) )) fig.update_layout(showlegendFalse) fig.show()关联规则挖掘的价值不仅限于零售业。在网络安全领域我曾用它分析攻击日志中的事件关联模式在医疗领域可用来发现症状与疾病的潜在联系。关键在于理解业务场景合理设置参数阈值让算法真正成为业务洞察的显微镜。

相关新闻

2025大模型技术演进与部署优化实践

2025大模型技术演进与部署优化实践

2026/7/13 16:16:17

1. 2025年大模型技术演进全景图2025年成为大模型发展的关键分水岭,六大里程碑式研究成果重新定义了技术边界。DeepSeek-R1首次实现32B参数下的蒸馏量化部署,Qwen3系列突破多模态理解瓶颈,Kimi K2在长上下文窗口优化上取得突破性进展。这些进展…

TVA与具身智能融合的内在必然性(15)

TVA与具身智能融合的内在必然性(15)

2026/7/13 16:06:17

前沿技术探索:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,是集深度强化学习(DRL)、卷积神经网络(CNN…

Vue Carousel事件处理详解:从slideclick到pagechange的实战应用

Vue Carousel事件处理详解:从slideclick到pagechange的实战应用

2026/7/13 16:06:17

Vue Carousel事件处理详解:从slideclick到pagechange的实战应用 【免费下载链接】vue-carousel A flexible, responsive, touch-friendly carousel for Vue.js 项目地址: https://gitcode.com/gh_mirrors/vu/vue-carousel 作为Vue.js生态中最受欢迎的轮播组件…

如何用ChatGPT把ROI提升3.8倍?——2024最新电商运营SOP流程图、数据看板配置及效果归因模型

如何用ChatGPT把ROI提升3.8倍?——2024最新电商运营SOP流程图、数据看板配置及效果归因模型

2026/7/13 18:06:22

更多请点击: https://kaifayun.com 第一章:ChatGPT电商运营的核心价值与ROI跃迁逻辑 ChatGPT并非仅是对话工具,而是电商运营中可量化的智能中枢——它通过语义理解、上下文记忆与实时决策能力,将用户意图、商品知识与营销策略动态…

GraphRNN实战教程:5分钟上手生成复杂网络结构

GraphRNN实战教程:5分钟上手生成复杂网络结构

2026/7/13 18:06:22

GraphRNN实战教程:5分钟上手生成复杂网络结构 【免费下载链接】graph-generation GraphRNN: Generating Realistic Graphs with Deep Auto-regressive Models 项目地址: https://gitcode.com/gh_mirrors/gr/graph-generation GraphRNN是一款基于深度自回归模…

Notion AI 从入门到精通:7天掌握智能笔记、自动会议纪要、项目管理自动化全流程

Notion AI 从入门到精通:7天掌握智能笔记、自动会议纪要、项目管理自动化全流程

2026/7/13 18:06:22

更多请点击: https://intelliparadigm.com 第一章:Notion AI 的核心能力与工作原理 Notion AI 是深度集成于 Notion 生态的生成式人工智能引擎,其底层依托大型语言模型(LLM)并经过领域特定微调,专为知识管…

Xenia Canary终极指南:5步在PC上完美运行Xbox 360经典游戏

Xenia Canary终极指南:5步在PC上完美运行Xbox 360经典游戏

2026/7/13 18:06:22

Xenia Canary终极指南:5步在PC上完美运行Xbox 360经典游戏 【免费下载链接】xenia-canary Xbox 360 Emulator Research Project 项目地址: https://gitcode.com/gh_mirrors/xe/xenia-canary 想要在现代电脑上重温《光环》、《战争机器》、《极限竞速》等Xbo…

【Cursor大项目实战黄金法则】:20年工程师亲授12个避坑指南与性能翻倍技巧

【Cursor大项目实战黄金法则】:20年工程师亲授12个避坑指南与性能翻倍技巧

2026/7/13 18:06:22

更多请点击: https://codechina.net 第一章:Cursor大项目实战的底层认知与价值定位 Cursor 不是传统意义上的“AI代码补全插件”,而是一个以 LLM 为内核、深度集成开发工作流的智能编程协作者。其底层架构将编辑器(基于 VS Code …

openEuler/yocto-meta-arm完全指南:Arm架构嵌入式开发的终极解决方案

openEuler/yocto-meta-arm完全指南:Arm架构嵌入式开发的终极解决方案

2026/7/13 17:56:21

openEuler/yocto-meta-arm完全指南:Arm架构嵌入式开发的终极解决方案 【免费下载链接】yocto-meta-arm This repository contains the Arm layers for OpenEmbedded. 项目地址: https://gitcode.com/openeuler/yocto-meta-arm 前往项目官网免费下载&#xff…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/13 7:41:16

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/12 0:03:42

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/12 0:03:42

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

卡梅德生物技术快报|纯化重组蛋白:变异链球菌 SepM 截短蛋白载体构建、诱导优化与纯化重组蛋白全套参数方案

卡梅德生物技术快报|纯化重组蛋白:变异链球菌 SepM 截短蛋白载体构建、诱导优化与纯化重组蛋白全套参数方案

2026/7/13 0:05:25

1 研究背景与现存技术痛点(提出问题)在口腔微生物分子机制研究中,SepM 蛋白酶是调控变异链球菌群体感应、致龋菌素合成的核心功能蛋白,体外功能验证、抗体开发均依赖高纯度可溶性 SepM 蛋白。当前原核表达体系针对 SepM 存在三大技…

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

2026/7/13 0:05:25

1 研究背景与现存技术痛点(提出问题)基因工程、蛋白质组学、生物制药研发流程中,蛋白质分离纯化是决定下游实验成败的关键环节。当前实验室常规蛋白质分离纯化工艺存在三类难以标准化的技术瓶颈:传统离子交换、分子筛层析无特异性…

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

2026/7/13 0:05:25

研究痛点提出(提出问题)重组肠激酶是融合标签切除核心工具酶,当前原核表达体系存在三大标准化难题,直接阻碍可复现的蛋白质分离纯化流程搭建:Trx、GST、单 SUMO 标签融合产物绝大多数为包涵体,沉淀占比超 9…