“寻找关联次数最多的商品”问题之算法实现项目汇报_第1页
“寻找关联次数最多的商品”问题之算法实现项目汇报_第2页
“寻找关联次数最多的商品”问题之算法实现项目汇报_第3页
“寻找关联次数最多的商品”问题之算法实现项目汇报_第4页
“寻找关联次数最多的商品”问题之算法实现项目汇报_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录01项目任务02研究步骤03研究成果04小组总结01项目任务通过复制您的文本后,在此框中选择粘贴。通过复制您的文本后,在此框中选择粘贴。通过复制您的文本后,在此框中选择粘贴。1.项目背景2.项目任务根据第二章“项目挑战”中设计的算法,采集超市某个时期内的流水账记录,将已有的算法进行程序实现,找出超市内关联次数最多的一对商品(“关联次数”的具体叙述详见第二章的“项目挑战”)。具体要求如下:1.采集商品交易数据,采用合适的文件格式进行存储。2.根据算法特点,预处理数据并能采用合理的数据结构进行组织。3.编写计算机程序,找出关联次数最多的商品。3.项目分析本项目围绕研究“寻找关联次数最多的商品”问题之算法实现这一主题,在采集数据和程序设计的过程中,初步掌握数据采集、数据整理和数据预处理的方法,领悟数据的价值、数据计算的意义;学会使用Python语言编写程序,解决实际问题,掌握程序调试与运行的方法;通过小组合作完成项目活动,整理分析完成一篇程序设计分析报告。最后,以小组为单位,通过一定的形式将分析报告向全班同学作介绍。02研究步骤通过复制您的文本后,在此框中选择粘贴。通过复制您的文本后,在此框中选择粘贴。通过复制您的文本后,在此框中选择粘贴。研究步骤1.组建团队2.任务分工3.采集和预处理数据4.程序实现5.项目展示1.组建团队组长:张三组员:李四、王五、赵六、陈七2.任务分工组内分工组员姓名主要职责联系方式组长XXX总体协调,最后汇总QQ:YYY组员AXXX数据采集,数据预处理QQ:YYY组员BXXX程序设计和调试QQ:YYY组员CXXX程序设计和调试QQ:YYY组员DXXX程序设计和调试QQ:YYY3.采集和预处理数据4.程序实现4.1读取超市流水账我们使用语句fromopenpyxlimportload_workbook引入库,然后打开"超市流水账.xlsx"文件,读取“流水账”工作表,并把货号和流水号提取出来,分别存储到列表a和b中。wb=load_workbook("超市流水账.xlsx")ws=wb['流水账']a=list(map(lambdax:x.value,ws['A']))#提取货号b=list(map(lambdax:x.value,ws['F']))#提取流水号4.程序实现4.2初始化商品关联次数我们设货号的最大值为n,则货号取值范围[1,n],因为后面的计算是以货号值为下标,舍弃了下标为0的元素,故需要设置大小为(n+1)*(n+1)的二维数组incidence_times,并初始化所有数组元素均为0。n=max(a[1:])#各商品的货号取值范围[1,n]#存储各商品关联次数的二维数组incidence_times=[[0foriinrange(n+1)]forjinrange(n+1)]4.程序实现4.3存储流水号相同的商品我们建立一个字典serial_number,该字典以流水号为键,以流水号相同的商品列表为值。serial_number={}#以流水号为键,存储相同流水号的商品#将流水号相同的商品存储到同一列表中fori,numinenumerate(a[1:]):ifb[i]inserial_number:serial_number[b[i]].append(num)else:serial_number[b[i]]=[num]4.程序实现4.4统计各商品关联次数遍历所有购物篮,为每个购物篮内的商品建立关联,并使其关联次数增1,这样就可以统计出所有商品之间的关联次数。forkey,vinserial_number.items():print(f'{key}:{v}')foriinrange(len(v)-1):forjinrange(i+1,len(v)):incidence_times[v[i]][v[j]]+=1incidence_times[v[j]][v[i]]+=14.程序实现4.5寻找关联次数最多的商品采用枚举算法,遍历二维数组incidence_times,找出关联次数最多的商品,输出其关联次数max_num和对应的商品货号sp1和sp2。max_num,sp1,sp2=0,0,0foriinrange(1,n):forjinrange(i+1,n+1):ifincidence_times[i][j]>=max_num:max_num,sp1,sp2=incidence_times[i][j],i,j4.程序实现4.6输出关联次数最多的商品因为有可能存在多对关联次数最多的商品,所以我们需要再次二维数组incidence_times,找出关联次数等于max_num的所有商品对。foriinrange(1,n):forjinrange(i+1,n+1):ifincidence_times[i][j]==max_num:print(f'关联次数最多的商品是{i}和{j},最大关联次数为{max_num}')5.程序测试输出各流水号中的货号信息(此处只截取了部分流水号信息)5.程序测试输出一对或多对关联次数最多的商品6.程序改进1 改进寻找和输出关联次数最多的商品的代码#寻找关联次数最多的商品max_num=max([max(i)foriinincidence_times])#有可能存在多对关联次数最多的商品sp=[(i,j)foriinrange(1,n)forjinrange(i+1,n+1)ifincidence_times[i][j]==max_num]fori,jinsp:print(f'关联次数最多的商品是{i}和{j},最大关联次数为{max_num}')6.程序改进2

增加查询关联次数为任意值的商品对功能#输出关联次数为num的商品num=int(input('请输入商品的关联次数,结束程序输入0:'))whilenum>0:sp=[(i,j,incidence_times[i][j])foriinrange(1,n)forjinrange(i+1,n+1)ifincidence_times[i][j]==num]fori,j,numinsp:print(f'商品{i}和{j}的关联次数为{num}')num=int(input('请输入商品的关联次数,结束程序输入0:'))03研究成果通过复制您的文本后,在此框中选择粘贴。通过复制您的文本后,在此框中选择粘贴。通过复制您的文本后,在此框中选择粘贴。研究成果经过这一周的项目挑战,我们对Python程序设计的知识有了更深的理解,特别是对程序设计的基本步骤以及思想有了更具体、深刻的体会。通过一次次的解决难题,使我们不仅巩固了理论知识,还培养了我们灵活运用知识、解决实际问题的能力。其次,这个项目是我们小组团队协作完成的,在项目挑战过程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论