用Python和NumPy从零实现商品关联规则挖掘附完整代码与数据集超市货架上商品摆放的奥秘往往藏在消费者的购物篮里。当一位顾客同时拿起牛奶和面包时背后可能隐藏着值得挖掘的消费规律。这种发现商品间关联关系的技术正是推荐系统和智能货架管理的核心。本文将带您用最基础的Python和NumPy工具亲手实现这套被称为亲和性分析的算法。不同于直接调用现成的机器学习库我们将从零构建每个计算步骤。您将学到如何用数组处理交易数据、计算关键指标并最终找出那些买A商品的人通常也会买B的黄金规则。文末提供的模拟数据集包含牛奶、面包、水果等常见商品您可以直接用来验证算法。1. 环境准备与数据理解任何数据分析项目的第一步都是准备好实验环境。这里我们只需要Python基础环境和NumPy库——它是科学计算的基石提供了高效的数组操作接口。安装只需一行命令pip install numpy我们的示例数据集模拟了超市购物记录每行代表一个购物篮用1/0标记是否购买某商品。数据格式如下牛奶面包苹果香蕉火腿1100001100...............加载数据只需NumPy的loadtxt函数import numpy as np data np.loadtxt(groceries.csv, delimiter,) print(f共加载{len(data)}条交易记录{data.shape[1]}种商品)提示实际业务中数据可能来自数据库或日志文件。确保您的数据已经过清洗缺失值已处理为0或适当填充。2. 基础统计与规则发现关联规则挖掘的核心是找出形如如果购买A则可能购买B的规律。我们需要两个关键指标支持度(Support)规则在数据集中出现的频率置信度(Confidence)当A出现时B出现的条件概率计算购买牛奶和面包的联合概率milk_and_bread np.sum((data[:,0]1) (data[:,1]1)) total_transactions len(data) support milk_and_bread / total_transactions print(f牛奶面包的支持度: {support:.2%})商品组合的支持度计算可以抽象为以下步骤遍历每种商品组合避免重复计算A→B和B→A统计同时购买的交易数除以总交易数得到支持度筛选支持度超过阈值的组合3. 高效实现关联规则挖掘当商品种类增多时暴力枚举所有组合效率极低。我们采用优化的双层循环结构from collections import defaultdict features [milk, bread, apple, banana, ham] valid_rules defaultdict(int) # 存储有效规则 num_occurrences defaultdict(int) # 存储前提出现次数 for sample in data: for premise in range(len(features)): if sample[premise] 0: continue num_occurrences[premise] 1 for conclusion in range(len(features)): if premise conclusion: continue if sample[conclusion] 1: valid_rules[(premise, conclusion)] 1计算置信度的核心公式置信度(A→B) 支持度(A∪B) / 支持度(A)Python实现confidence defaultdict(float) for (premise, conclusion), count in valid_rules.items(): confidence[(premise, conclusion)] count / num_occurrences[premise]4. 规则评估与业务应用得到所有规则后需要根据业务需求筛选最有价值的组合。常见策略包括支持度排序找出高频组合置信度排序找出最强关联提升度(Lift)衡量规则的实际效果支持度Top5规则提取from operator import itemgetter sorted_support sorted(valid_rules.items(), keyitemgetter(1), reverseTrue) for i, (rule, count) in enumerate(sorted_support[:5]): prem, conc rule print(f规则#{i1}: 如果购买{features[prem]}则可能购买{features[conc]}) print(f- 支持度: {count}/{len(data)}) print(f- 置信度: {confidence[rule]:.1%})实际业务中还需要考虑规则的可解释性避免牵强关联商品利润贡献高毛利商品优先季节性因素不同时段规则可能变化完整代码示例包含数据预处理、规则生成和可视化模块已打包为可运行的Jupyter Notebook。通过这个项目您不仅理解了推荐算法的底层逻辑更掌握了将数学公式转化为高效代码的能力。下次看到超市的关联陈列时您会知道那背后是一套精密的概率计算。