版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验6-1:关联规则核心指标的手工验证与计算1.实验描述关联规则的难点不在于代码,而在于对指标的理解。在运行算法前,我们先通过一个极简的“微型数据集”,让我们像计算机一样思考,手工(或辅助代码)计算指标,从而透彻理解“为什么{A}->{B}是一条强规则”。2.实验目的理解事务(Transaction)与项集(Itemset)的概念。深刻理解支持度(Support)、置信度(Confidence)和提升度(Lift)的计算公式与业务含义。验证“提升度>1”才是有效规则的关键。3.实验步骤与代码Pythonimportpandasaspd#步骤1:定义一个微型交易数据集(5笔订单)#1代表购买,0代表未购买data={'牛奶':[1,0,1,1,0],'面包':[1,1,1,1,0],'尿布':[0,0,1,1,1],'啤酒':[0,0,0,1,1]}df=pd.DataFrame(data,index=['订单1','订单2','订单3','订单4','订单5'])print("原始交易数据:")print(df)#步骤2:手工计算验证(以{牛奶}->{面包}为例)#规则含义:买了牛奶的人,通过也会买面包#计算总订单数n=len(df)#计算支持度(Support):同时包含牛奶和面包的订单比例#订单1,3,4同时包含->3笔support_milk_bread=3/nprint(f"\n[计算]支持度(牛奶->面包)=3/5={support_milk_bread}")#计算置信度(Confidence):在买牛奶的订单中,买面包的比例#买牛奶的订单:1,3,4(共3笔)->其中买了面包的:1,3,4(共3笔)confidence_milk_bread=3/3print(f"[计算]置信度(牛奶->面包)=3/3={confidence_milk_bread}")#计算提升度(Lift):置信度/面包的先验概率(总体支持度)#面包的总体支持度:订单1,2,3,4都有面包->4/5=0.8lift_milk_bread=confidence_milk_bread/(4/5)print(f"[计算]提升度(牛奶->面包)=1.0/0.8={lift_milk_bread}")#步骤3:业务解读print("\n---解读---")iflift_milk_bread>1:print("提升度>1,说明牛奶和面包是正相关(互补品),捆绑销售有效。")else:print("提升度<=1,说明两者无关或负相关。")4.实验总结我们应通过此过程明白:置信度高(比如100%)并不一定代表规则好,因为如果面包本身大家都会买(支持度很高),那么买了牛奶再买面包可能只是巧合。只有提升度>1,才能说明牛奶促进了面包的销售。
实验6-2:使用Apriori算法进行频繁项集挖掘1.实验描述当数据量变大时,穷举所有组合是不可能的。本实验引入经典的Apriori算法。我们将模拟一个小型超市的清单,学习如何使用mlxtend库将原始的“列表数据”转换为“独热编码(One-hot)”格式,并挖掘频繁项集。2.实验目的掌握mlxtend.preprocessing.TransactionEncoder进行数据预处理。掌握apriori函数的使用,理解min_support参数如何“剪枝”。3.实验步骤与代码注意:需先安装库pipinstallmlxtendPythonimportpandasaspdfrommlxtend.preprocessingimportTransactionEncoderfrommlxtend.frequent_patternsimportapriori#步骤1:准备原始清单数据(ListofLists)dataset=[['牛奶','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'],['莳萝','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'],['牛奶','苹果','芸豆','鸡蛋'],['牛奶','独角兽','玉米','芸豆','酸奶'],['玉米','洋葱','洋葱','芸豆','冰淇淋','鸡蛋']]#步骤2:数据预处理(转换为One-Hot编码矩阵)#Apriori只能处理0/1矩阵或布尔矩阵te=TransactionEncoder()te_ary=te.fit(dataset).transform(dataset)df=pd.DataFrame(te_ary,columns=te.columns_)print("One-Hot编码后的数据前5行:")print(df.head())#步骤3:挖掘频繁项集(FrequentItemsets)#设定最小支持度min_support=0.6(即至少在60%的订单中出现)frequent_itemsets=apriori(df,min_support=0.6,use_colnames=True)#添加一列'length'方便观察项集包含几个商品frequent_itemsets['length']=frequent_itemsets['itemsets'].apply(lambdax:len(x))print("\n挖掘到的频繁项集:")print(frequent_itemsets)4.实验总结观察结果,为什么有些组合(如{'牛奶','玉米'})没有出现在结果中?(因为它们的共同出现频率低于60%)。min_support是控制结果数量的第一道阀门,设置得太高会漏掉长尾商品,设置得太低会产生海量计算。
实验6-3:生成强关联规则与筛选1.实验描述有了频繁项集,我们就可以生成规则了。本实验重点在于“筛选”。在成百上千条规则中,如何找出真正有商业价值的规则?我们将学习利用min_threshold和metric参数进行过滤。2.实验目的掌握association_rules函数的使用。学会基于Lift(提升度)和Confidence(置信度)筛选规则。理解“前件(antecedents)”和“后件(consequents)”的关系。3.实验步骤与代码Pythonfrommlxtend.frequent_patternsimportassociation_rules#接上一个实验的frequent_itemsets#步骤1:生成关联规则#metric="confidence",min_threshold=0.7#含义:只保留置信度>=70%的规则rules=association_rules(frequent_itemsets,metric="confidence",min_threshold=0.7)#步骤2:筛选强规则#筛选条件:提升度>1.0(正相关)且置信度>0.8strong_rules=rules[(rules['lift']>1.0)&(rules['confidence']>0.8)]#整理列名以便展示cols=['antecedents','consequents','support','confidence','lift']print("---强关联规则(Top5)---")print(strong_rules[cols].sort_values(by='lift',ascending=False).head())#步骤3:具体规则解读#假设输出了一条规则:{洋葱,鸡蛋}->{芸豆}#解释:买了洋葱和鸡蛋的人,有极大概率也会买芸豆。4.实验总结为什么我们不仅看置信度,还要看提升度?观察antecedents列,如果前件包含多个商品(如{洋葱,鸡蛋}),说明这是基于组合购买行为的预测,比单一商品预测更精准。
实验6-4:【综合实验】超市购物篮分析实战1.实验描述综合运用本章知识,处理一个稍大的模拟零售数据集。重点在于模拟真实的分析流程:数据加载->探索->挖掘->可视化->业务决策。我们将尝试用散点图来展示规则的分布,找出那些“支持度虽然不高,但提升度极高”的隐秘爆款组合。2.实验目的完整演练关联规则挖掘流程。掌握关联规则的可视化分析方法。能够根据挖掘结果提出具体的促销策略(如:货架摆放、组合打折)。3.实验步骤与代码Pythonimportmatplotlib.pyplotaspltimportseabornassns#步骤1:构造更复杂的模拟数据(模拟1000笔交易)#为了演示,我们随机生成一些交易,但人为植入几条强规则importrandomdataset=[]items=['牛奶','面包','黄油','果酱','啤酒','尿布','可乐','薯片']foriinrange(1000):transaction=[]#随机买2-5件商品k=random.randint(2,5)transaction=random.sample(items,k)#植入规则1:买啤酒->必买尿布(植入100次)ifi<100:transaction=['啤酒','尿布','花生']#植入规则2:买面包->必买黄油(植入150次)elifi<250:if'面包'intransactionand'黄油'notintransaction:transaction.append('黄油')dataset.append(transaction)#步骤2:预处理与挖掘te=TransactionEncoder()te_ary=te.fit(dataset).transform(dataset)df=pd.DataFrame(te_ary,columns=te.columns_)#放宽支持度,为了看到更多规则freq_items=apriori(df,min_support=0.05,use_colnames=True)rules=association_rules(freq_items,metric="lift",min_threshold=1.1)#步骤3:规则可视化(散点图)#横轴:支持度,纵轴:置信度,颜色:提升度plt.figure(figsize=(10,6))sc=plt.scatter(rules['support'],rules['confidence'],c=rules['lift'],cmap='Reds',s=100,alpha=0.7)plt.colorbar(sc,label='Lift(提升度)')plt.xlabel('Support(支持度)')plt.ylabel('Confidence(置信度)')plt.title('关联规则分布图')plt.grid(True,linestyle='--',alpha=0.5)#标注出提升度最高的点max_lift_idx=rules['lift'].idxmax()best_rule=rules.loc[max_lift_idx]plt.annotate(f"BestRule(Lift={best_rule['lift']:.2f})",xy=(best_rule['support'],best_rule['confidence']),xytext=(best_rule['support']+0.02,best_rule['confidence']-0.05),arrowprops=dict(facecolor='black',shrink=0.05))plt.show()#步骤4:输出最有价值的Top5规则print("---最具商业价值的规则(按提升度排序)---")print(rules.sort_values(by='lift',ascen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业用地供电配套施工方案
- 地下停车场抗浮设计方案
- 储能变流器适配光伏储能充电桩的并网方案
- 2026学年青海省果洛六年级语文期末高分预测高分特训题附答案详细答案和解析
- 2026学年安徽省三年级语文期末深度自测黑金考题附答案详细答案和解析
- 2026学年吉林省公主岭市四年级数学期末点睛提升重点试题详细参考解析详细答案和解析
- 论行政诉讼第三人:概念、地位与实践解析
- 论罪犯劳动:历史、意义、问题与展望
- 2026年全国施工员之装修施工基础知识考试黑金提分题(附答案)
- 论破产法中管理人的多元角色与制度优化-基于实践案例的深度剖析
- 2023学年完整公开课版东南亚4
- 多媒体技术应用课件PPT教学资料
- 川2020J146-TJ 建筑用轻质隔墙条板构造图集
- 医疗技术临床应用管理目录
- DB11T 1937-2021河道水环境维护和河道绿地管护分级作业规范
- GB/T 320-2006工业用合成盐酸
- 工业CT发展及应用课件
- 许继电气500kv变压器电量保护wbh-801ag5技术说明书
- 《民法典》-第五编 婚姻家庭-案例分析,解读
- 人教人音版六年级音乐上册《红河谷》课件(优秀)
- 7《音乐的风格》之《梅花三弄》 课件(共9张PPT)
评论
0/150
提交评论