计算机毕业设计Python+Spark电商推荐系统 商品推荐 电商大数据 大数据毕业设计
一、选题背景与意义
(一)选题背景
近些年来,基于互联网大数据的应用已经涉及各行各业,网上商城、政府办公、大数据智能分析等服务内容层出不穷。那么基于互联网大数据的电商推荐与数据智能分析平台会对各种商品的信息数据进行数据采集,数据统计与分析,最终以可视化图表的形式展示给广大用户,解决了以往费时费力的人工收集与分析工作。我们这一款电商推荐智能分析平台是依赖以大数据为背景开发出的项目,那么就要先了解什么是大数据。
什么是大数据呢?网络权威知识将大数据认定为在可操作的时间跨度内没有办法使用普通传统软件来捕捉、收集和对其操作的数据集。大数据技术的独到之处不在于拥有巨大的数据信息,而是针对对这些数据进行有可见效果的特殊加工。换一方面来讲,如果将大数据与一个现有的行业进行对比,那么这个行业赚钱的重中之重在于通过“操作”提升数据的“执行效果”和数据的“额外价值”。
第一、在这个大数据火爆的年代,利用其可以处理更多的数据,有时还可以处理和某一个特殊现象有关的一切数据,而不简单地依靠随机采样。与受约束在小数据领域相对比,使用大量的数据为我们带来了更可靠的准确度,也使得我们观察到了一些从未发现的细致之处。总而言之相比于以往的人工考研数据分析,我们所采用的数据信息会更广阔,计算速度也会更快更加准确,为用户带来更值得信赖的服务体验。第二、就是“大数据就等于风向标”,在之前的统计计算中,因为数据量不是过于庞大,那么精确度就成为了相关领域人员所推崇的目标。当我们拥有大量的考研数据时,十分精确的准确度不再是我们的主要指标。我们不再需要对一个现象一探究竟,主要知道大致的发展方向就好了。当然,我们也不会彻底放弃正确性,只是不再过度地追求它。第三、不再过度地去找到他们的相关联的地方,而是去寻找他们之间的独有的联系。大数据告诉我们“这个是什么”,而不是“怎么样产生这样的结果"。在大数据时代,我们不需要对底层的事物一探究竟,只需要让数据告诉我们分析得到的结果就好。













(二)意义
在网购竞争激烈的环境下,电商行业各大企业既要提高产品质量、降低产品价格,还要了解客户的想法和需求,所以需要格外关注客户购买商品后的评论,从客户留下的评论文本中提取出有价值的信息进行分析,以便进一步调整或优化经营策略。
客户在购买产品后留下的评论能够体现客户对产品的情感、态度与建议,商家通过评论数据可以直观地了解到客户的需求以及产品的不足,利于对产品或服务进行改进。
二、研究的内容、思路(方案)及解决的主要问题
(一)研究内容
毕业设计研究的主要内容包括电商推荐与数据分析系统的项目开发和大数据分析与可视化、数据挖掘三个方面,其中项目开发分客户端和服务器端两部分开发,客户端模块包括商品搜索模块、查询订单模块、在线支付模块、商品评价模块、购物车模块、商品详情查看模块;服务器端模块包括用户管理模块、评论管理模块、订单管理模块、类别管理模块、品牌管理模块、商品管理模块。
大数据分析与可视化、数据挖掘方面研究项目业务需求理解,对采集数据有非常清晰、明确的认识;准备数据,如数据收集、数据清洗、数据补全、数据整合、数据转换、特征提取等;构建数据训练模型、理解掌握数据挖掘的技术和相应算法;评估模型,使用各种评估手段和评估指标彻底地评估构建的数据模型;将分析和评估的结果以图表方式可视化展现,撰写数据分析报告等。
(二)研究思路(方案)
前端 研究思路:了解mvvm分层思想,学习elementUI的官方文档,仿照官方的demo完成前端一个模块的开发,积累开发组件,后期直接复用;具体办法如下:
一、首先,需要确定以什么样的方式来获取到当前应该展示何种语言
我采用的是用URL传递?lang=en或者?lang=zh-CN这样的传递参数的形式。这样做的好处在于可以通过链接指定用哪种语言。但是,只依赖于地址栏参数也是不方便的。比如,在页面跳转的时候,这个地址栏参数可能就丢失了。这会导致你在页面跳转之后就不知道该用哪种语言展示了。而理想的的方式应该是,进入某个页面的时候带有这个参数(这个时候就获取到该使用何种语言了),等再跳转到其它页面的时候就不必再带这个lang参数了,因为此时你已经知道该用哪种语言了。所以,应该在一进入第一个页面的时候就把这个参数存下来,比如,存在localstorage中,存在vuex的state中。
这里,就引出来一个语言判断的优先级问题。
因为地址栏里可能有lang参数,localstorage中可能也有相关的存储字段(因为上次访问过本应用),你可能还想设置默认的降级语言,等等。其优先级应该如何处理呢?
正确的优先级应该是:
先看地址栏参数中有没有;
再看localstorage中有没有;
然后再通过navigator.language获取浏览器默认语言,看是否是你的应用所支持的语言,若是,则采用之;
最后才是使用回退语言(例如,比较通用的英语)。
当然,你可以根据你的需求来做一些简化。
二、其次,采用什么工具来解决语言转换和打包
(1)i18n相关工具的选择——由谁来提供多语言转换函数(通常是$t)?
目前国际化通用方式多数基于i18n,我们也无需再去造轮子了。但就i18n的具体使用上,有很多不同的NPM模块。比如vuex-i18n、vue-i18n、simplest-i18n等。因为多数复杂一点的项目都会上vuex,所以复杂一点的项目选择vuex-i18n会比vue-i18n更方便。
而simplest-i18n这个很小众的模块,其实也有它的好处。
后端 研究思路:去CSDN下载springboot开发脚手架代码,修改为自己可复用的程序,运行成功后与前端Vue对接。具体如下:
1.建立springboot模板 改test包的名字 java8版本
2.配置好pom.xml文件
3.配置application.yml文件
4.(可选).建造maybatis-mapper.xml文件放置xml语句:注意namespace 和id要与 mapper接口中的类名和方法名一样
5.建立mapper文件
6.建立pojo包并且交给spring管理(@component)
7.建立三个层级包controller,service,dao
8.在source-templates下建立index.html以及其他html(注意不能直接复制文件)
9.在dao层(@repository)写数据库的直接控制语句
10.在controller层拦截我们在浏览器输入的网址如:@requestmapper/user
11.优化与解耦
Spark大屏统计端 研究思路:将spark集成到springboot中,使用spark_sql完成数据统计,统计的数据返回json给echarts插件渲染图表;
原则一:避免创建重复的RDD
– 对同一份数据,只应该创建一个RDD,不能创建多个RDD来代表同一份数据
– 极大浪费内存
原则二:尽可能复用同一个RDD
– 比如:一个RDD数据格式是key-value,另一个是单独value类型,这两个RDD的value部分完全一样,这样可以复用达到减少算子执行次数
原则三:对多次使用的RDD进行持久化处理
– 每次对一个RDD执行一个算子操作时,都会重新从源头处理计算一遍,计算出那个RDD出来,然后进一步操作,这种方式性能很差
– 对多次使用的RDD进行持久化,将RDD的数据保存在内存或磁盘中,避免重复劳动
– 借助cache()和persist()方法
原则四:避免使用shuffle类算子
– 在spark作业运行过程中,最消耗性能的地方就是shuffle过程
– 将分布在集群中多个节点上的同一个key,拉取到同一个节点上,进行聚合和join处理,比如groupByKey、 reduceByKey、 join等算子,都会触发shuffle
原则五:使用map-side预聚合的shuffle操作
– 一定要使用shuffle的,无法用map类算子替代的,那么尽量使用map-site预聚合的算子
– 思想类似MapReduce中的Combiner
– 可能的情况下使用reduceByKey或aggregateByKey算子替代groupByKey算子,因为reduceByKey或aggregateByKey算子会使用用户自定义的函数对每个节点本地相同的key进行预聚合,而groupByKey算子不会预聚合
原则六:使用Kryo优化序列化性能
– Kryo是一个序列化类库,来优化序列化和反序列化性能
– Spark默认使用Java序列化机制(ObjectOutputStream/ ObjectInputStream API)进行序列化和反序列化
– Spark支持使用Kryo序列化库,性能比Java序列化库高很多, 10倍左右
关于大数据开发学习,Spark调优原理及思路,以上就为大家做了基本的讲解了。要进行调优之前,首先一定是要对框架底层的运行原理要非常清楚
爬虫端 研究思路:使用selenium模拟人类点击,抓取京东商品;
一、明确需求
首先我们要明白我们爬取的具体是什么内容,比如爬取文章标题,爬取图片,爬取实时新闻
二、建立request请求
1.使用的是哪一种请求方式,get post等
2.获取请求URL,确定请求连接
3.拼接头部信息,User-Agent,Host,Cookies等
4.设置请求体,即请求时额外携带的数据,比如表单提交时的表单数据。
三、获取数据
获取请求响应状态,比如200、404、301、502等;
四、解析数据
1、使用json解析数据;
2、使用正则表达式提取数据;
3、使用BeautifulSoup库来处理数据;
4、使用PyQuery来解析数据;
五、存储数据
1、可使用纯文本、json、xml等存储;
2、使用关系型数据库存储,如mysql、oracle等;
3、使用非关系型数据库存储,如mongodb、redis等;
4、图片、视频等可直接保存。
建立数据训练模型 研究思路:基于物品的协同过滤算法。
用户A 喜欢了一个物品s集合,那么推荐的时候就把与物品s集合里最相似的前N个物品推荐给用户A。ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。
数据分析与检测 研究思路:使用pandas、numpy、聚簇算法、lstm情感分析等完成数据清洗、归类,最终构建数据集供算法、业务系统使用;
1.数据分析的基本步骤:
挖掘业务含义->制定分析计划->拆分查询数据->提炼业务洞察->产出商业决策
第一步,先挖掘业务含义,理解数据分析的背景、前提以及想要关联的业务场景结果是什么。
第二步,需要制订分析计划,如何对场景拆分,如何推断。
第三步,从分析计划中拆分出需要的数据,真正落地分析本身。
第四步,从数据结果中,判断提炼出商务洞察。
第五步,根据数据结果洞察,最终产出商业决策。
2.内外因素分解法
在数据分析的过程中,会有很多因素影响到我们的北极星指标,那么如何找到这些因素呢?在此向大家推荐内外因素分解法。内外因素分解法是把问题拆成四部分,包括内部因素和外部因素,可控和不可控,然后再一步步解决每个问题。
(三)研究方法
1、基于《软件工程》中的“瀑布模型”进行需求分析和产品设计;
2、采用第三范式完成数据库建模,最终生成数据库表;
3、使用springboot框架搭建web开发环境;
4、了解支付宝沙箱支付原理,使用springboot集成支付宝支付(alipay);
5、学习调用短信接口API文档,项目封装短信调用工具调用阿里云短信平台完成短信相关业务;
6、基于Spark计算框架实现实时echarts数据大屏;
7、使用协同过滤算法的基于用户、基于物品两种思路实现商品推荐;
8、使用lstm情感分析模型完成电商评论情感分析;
9、使用Python爬取京东商品数据;
(四)拟解决的主要问题及措施
1、解决方案无法提供新见解或及时的见解
(1)数据不足
有些组织可能由于分析数据不足,无法生成新的见解。在这种情况下,可以进行数据审核,并确保现有数据集成提供所需的见解。新数据源的集成也可以消除数据的缺乏。还需要检查原始数据是如何进入系统的,并确保所有可能的维度和指标均已经公开并进行分析。最后,数据存储的多样性也可能是一个问题。可以通过引入数据湖来解决这一问题。
(2)数据响应慢
当组织需要实时接收见解时,通常会发生这种情况,但是其系统是为批处理而设计的。因此有些数据现在仍无法使用,因为它们仍在收集或预处理中。
检查组织的ETL(提取、转换、加载)是否能够根据更频繁的计划来处理数据。在某些情况下,批处理驱动的解决方案可以将计划调整提高两倍。
(3)新系统采用旧方法
虽然组织采用了新系统。但是通过原有的办法很难获得更好的答案。这主要是一个业务问题,并且针对这一问题的解决方案因情况而异。最好的方法是咨询行业专家,行业专家在分析方法方面拥有丰富经验,并且了解其业务领域。
2、不准确的分析
(1)源数据质量差
如果组织的系统依赖于有缺陷、错误或不完整的数据,那么获得的结果将会很糟糕。数据质量管理和涵盖ETL过程每个阶段的强制性数据验证过程,可以帮助确保不同级别(语法、语义、业务等)的传入数据的质量。它使组织能够识别并清除错误,并确保对某个区域的修改立即显示出来,从而使数据纯净而准确。
(2)与数据流有关的系统缺陷
过对开发生命周期进行高质量的测试和验证,可以减少此类问题的发生,从而最大程度地减少数据处理问题。即使使用高质量数据,组织的分析也可能会提供不准确的结果。在这种情况下,有必要对系统进行详细检查,并检查数据处理算法的实施是否无故障
3、在复杂的环境中使用数据分析
(1)数据可视化显示凌乱
如果组织的报告复杂程度太高。这很耗时或很难找到必要的信息。可以通过聘请用户界面(UI)/用户体验(UX)专家来解决此问题,这将帮助组织创建引人注目的用户界面,该界面易于浏览和使用。
(2)系统设计过渡
数据分析系统处理的场景很多,并且为组织提供了比其需要还要多的功能,从而模糊了重点。这也会消耗更多的硬件资源,并增加成本。因此,用户只能使用部分功能,其他的一些功能有些浪费,并且其解决方案过于复杂。
确定多余的功能对于组织很重要。使组织的团队定义关键指标:希望可以准确地测量和分析什么,经常使用哪些功能以及关注点是什么。然后摒弃所有不必要的功能。让业务领域的专家来帮助组织进行数据分析也是一个很好的选择。
4、系统响应时间长
(1)数据组织效率低下
也许组织的数据组织起来非常困难。最好检查其数据仓库是否根据所需的用例和方案进行设计。如果不是这样,重新设计肯定会有所帮助。
(2)大数据分析基础设施和资源利用问题
问题可能出在系统本身,这意味着它已达到其可扩展性极限,也可能是组织的硬件基础设施不再足够。
这里最简单的解决方案是升级,即为系统添加更多计算资源。只要它能在可承受的预算范围内帮助改善系统响应,并且只要资源得到合理利用就很好。从战略角度来看,更明智的方法是将系统拆分为单独的组件,并对其进行独立扩展。但是需要记住的是,这可能需要对系统重新设计并进行额外的投资。
5、维护成本昂贵
(1)过时的技术
组织最好的解决办法是采用新技术。从长远来看,它们不仅可以降低系统的维护成本,还可以提高可靠性、可用性和可扩展性。逐步进行系统重新设计,并逐步采用新元素替换旧元素也很重要。
(2)并非最佳的基基础设施
基础设施总有一些优化成本的空间。如果组织仍然采用的是内部部署设施,将业务迁移到云平台可能是一个不错的选择。使用云计算解决方案,组织可以按需付费,从而显著降低成本。
(3)选择了设计过渡的系统
如果组织没有使用大多数系统功能,则需要继续为其使用的基础设施支付费用。组织根据自己的需求修改业务指标并优化系统。可以采用更加符合业务需求的简单版本替换某些组件。
6环境搭建方面问题
本系统开发环境是全套Java环境,主要有jdk1.8、idea、mysql5.7、Maven等。项目开发环境需要搭建springboot+vue框架,并且用Springboot集成Spark,所以如果环境搭建存在失误,将会导致后期代码开发遇到严重问题。解决办法:学习尚硅谷大数据课程,一步一步跟着教程完成环境搭建;
7.测试方面问题
软件系统的测试在整个开发过程中尤其重要,很多设计人员在完成软件系统设计后,没有对计算机软件系统进行测试,就使计算机软件在没有保证的情况下投入运营,一旦系统在运营过程中出现问题,将会给计算机系统带来很大的影响。解决办法:每完成一个功能,进行JUnit单元测试;每完成一个大的业务模块进行整体自动化单元测试;整体做完部署到服务器,让同学帮忙寻找BUG进行修复;
三、课题研究进度安排
1. 2022年12月16日-2023年2月5日 按照毕业设计要求规范,完成系统的初步设计,完成论文的初稿
2.2023年2月5日-3月31日 完善系统设计和编码
3.2023年4月1日-4月15日 系统测试,修改毕业论文
4.2023年4月16日-4月30日 完成毕业论文终稿,并上交
5.2023年5月1日-5月20日 进行毕业设计答辩
四、主要参考文献
[1]田啸.大数据环境下计算机应用技术研究[J.]电脑知识与技术2019(14):246-247.
[2]侯聪聪.计算机软件技术在大数据时代的应用[J].电脑知识与技术2018(14):240-241.北京:清华大学出版社,2016.335-340
[3]于知言.计算机应用技术在大数据时代的运用前景研究[J].知识文库2017(15):107.
[4]李超科.计算机大数据分析及云计算网络技术发展探究[J].计算机产品与流通2019(11):12
[5]吴晓玲,邱珍珍.基于云存储架构的分布式大数据安全容错存储算法[J].中国电子科学研究院学报2018,13(6):720-724.
[6]张若愚.Python 科学计算[M].北京:清华大学出版社.2016
[7]RobertCimman,Eduart Rohan-Multiscale finite element calculations in Python using SfePy.-2019.vol.45
[8]Linwei He,Matthew Gibert-A Python script for adaptive layout optimization of trusses. -2019.vol.69
[9]Elservierjournal-Python programming on win64.-2016.6.2
[10]王磊. 对Mysql数据库的访问方法的研究[J]. 网络安全技术与应用,2014,(04):138-139.
[11]丛宏斌,魏秀菊,王柳,朱明,曾勰婷,刘丽英. 利用PYTHON解析网络上传数据[J]. 中国科技期刊研究,2013,24(04):736-739.
[12]卫启哲. 试论动态开发语言Python研究[J]. 电脑编程技巧与维护,2014,(14):23-24.
[13]陈威,韦佳,张洁. 海量地震数据移动存储设备的现状分析[J]. 物探装备,2013,23(05):291-293+299.
[14]许沫. 生活模块仪表详细设计浅析[J]. 内蒙古石油化工,2013,39(14):79-80.
[15]范晶. 模拟上行系统测试平台介绍[J]. 中国新技术新产品,2013,(01):31-32.