2流程分析1系统总体结构设计电影总体排名系统总体架构如1和2所示:1mapreduce处理电影排名总体架构2pandas处理电影排名总体架构电影总体推荐系统总体架构如3和4所示:3mapreduce处理电影推荐总体架构4pandas处理电影推荐总体架构2系统功能设计本课程设计采用HDFS、MapRduce、以及协同过滤的相关函数、pandas预处理与可视化等相关技术实现了电影推荐和排名系统。功能比较简单,主要是实现推荐算法,没有设计前端页面,但是后台使用的推荐算法经典且严谨,借鉴了相关成功的案例,结合实际情况设计出了推荐效果较为理想的电影推荐系统。本课程设计主要实现了两个功能模块:电影排名模块,个性化电影推荐模块。3系统实现机制1电影排名模块实现机制系统先将采集到的用户的评分相关的数据集保存到HDFS分布式文件系统中,然后通过mapreduce先进行分组,然后基于同一部电影的所有评分算出这部电影的平均分,最后在进行排序。系统利用pandas将mapreduce的分组、求平均值、排序进行实现,并对相关量之间的关系进行可视化展示。2个性化电影推荐模块实现机制系统先将采集到的用户的评分相关的数据集保存到HDFS分布式文件系统中,经过MapReduce基于用户的协同过滤算法,通过用户的历史数据得到相关用户与其的相似度,然后以相似度为权重计算出用户对电影的预测打分,最后根据预测打分对每一位用户进行推荐排序,得出最后结果。系统利用pandas对mapreduce的实现过程进行复原,中间涉及到算法的部分则是采用mapreduce已生成的结果进行数据处理得到用户需要的格式,并且对相关量进行比较分析和可视化展示结果。
电影分组计算通过源数据可以对电影进行分组,方便下面计算机电影平均值。电影分组求平均分计算通过先求出电影的总分除以评价该电影的人数得出电影的平均分。根据平均分进行排序通过电影的平均分进行降序排序,得到电影TOPN的排行榜。5个性化电影推荐实现基于用户的协同过滤算法是推荐算法中最早应用的推荐算法。该推荐算法最初1992年被提出并应用于邮件过滤系统,之后被应用于新闻过滤。基于用户的协同过滤推荐算法是推荐系统中应用比较多的的一种推荐算法。基于用户的协同过滤的主要思想是通过分析不同的用户对物品的评分即喜爱情况来寻求各用户之间的相似性,从而进行相关推荐。协同过滤常常被用于分辨某位特定顾客可能感兴趣的东西,这些结论来自于对其他相似顾客对哪些产品感兴趣的分析。协同过滤以其出色的速度和健壮性,在全球互联网领域炙手可热。此次课程设计我们采用的是基于用户的协同过滤,通过不同用户对电影的评分来评测用户之间的相似性,基于用户之间的相似性与用户对电影的评分做出推荐相关电影。2基于用户的协同过滤示意向量空间余弦的相似度计算余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。通过计算两个向量夹角的余弦值来求解相似度。余弦值的数据范围为[-1,1],越趋近于相似度越高。预测评分计算通过计算用户与用户之间相似度与用户对电影的评分的乘积求出预测综合评分,然后对应用户看过的电影的预测综合评分置0。根据预测评分排序根据求出的用户对电影的预测综合评分,根据从高到低的顺序排列。根据需求去得分较高的电影作为给用户推荐的电影。2实现过程1电影排名实现流程3mapreduce处理电影排名流程4pandas处理电影排名流程2电影排名流程梳理mapreduce实现过程第一个MapReduce实现的是以movieid分组,输出useridsorce用户id,评分)第二个MapReduce实现的是将第一次MapReduce的输出作为输入,求出每个电影的平均评分并输出movieid和score。第三个MapReduce实现的是将第二次的MapReduce的输出进行降序排序,通过compareTo方法进行比较。pandas实现过程第一步:使用pandas先导入源数据,先为源数据添加列名,然后按照电影ID进行分组,再统计不同电影的观影人数,并进行排序,最后取电影ID前20的进行柱状展示。第二步:求出每一部电影的观影评分平均值,然后选取电影ID前10的进行柱状展示。第三步:根据评分对电影ID进行排序。3个性化电影推荐实现流程5mapreduce处理个性化电影推荐流程6pandas处理个性化电影推荐流程4个性电影推荐流程梳理mapreduce实现过程第一个MapReduce实现的是按照uesrid分组,并输出movieid_score,电影id分组可以,顺序可调换第三个MapReduce实现的是按照movieid分组,并输出userid_score,两次分组目的就是实现乘积运算,然后计算用户之间的相似度第四个MapReduce实现的是以userid分组,输出movieid_score_0.0第五个MapReduce实现的是先将第四个MapReduce输出的分数置0,再以userid分组,将综合评分靠前的movieid排在前面,实现推荐功能。pandas实现过程第一步:使用pandas先导入源数据,先为源数据添加列名,然后按照用户ID进行分组,再选取用户ID为1的各列进行分析,再按照评分进行排序,最后随机选取10列数据进行柱状展示,最后统计每一位用户所观看的电影数目进行柱状展示。第二步:导入mapreduce生成的用户与用户之间相似度的源数据并且展示,设置列名——"用户ID","用户ID-相似度",并按照用户ID进行排序,将用户ID-相似度进行单元格拆分,先对“用户ID-相似度”进行字符串拆分成为“用户ID”“相似度”两列,再和前面获取的用户ID进行合并,最后按照用户ID进行分组,最后对用户ID和另外的用户ID以及他们之间的相似度进行可视化展示。第三步:先导入数据,设置列名——"电影ID","用户ID-评分",并按照电影ID进行排序,将用户ID_评分进行单元格拆分,然后先对“用户ID_评分”进行字符串拆分成为“用户ID”“评分”两列,再和前面获取的电影ID进行合并,最后按照电影ID进行分组,并将评分为0.0的给删除。第四步:这一步模拟mapreduce执行对应用户的评分乘以相应地相似度的到推荐评分,根据第2步和第3步的结果进行完成,最后对用户ID、电影ID、以及推荐评分做一个可视化展示。第五步:根据第四步的结果,对用户ID进行分组,然后求出评分最高的值,然后根据用户ID和推荐评分,找出最好的推荐电影,最后根据前面获得的用户ID以及对应的最高评分,获取相对应的电影ID,并推荐给用户
4设计实现1排序模块实现排序模块是电影推荐系统的电影排名部分,本系统采用最快最简单的平均分排序算法。推荐系统先将用户对电影的评分的数据集保存到HDFS分布式文件系统中,经过MapReduce计算出电影的平均分。而pandas主要实现的是还原mapreduce的过程,在此过程中,对相关量之间的联系进行可视化展示。1mapreduce实现排序模块核心代码:求每部电影的平均评分publicclassWordCountReducerextendsReducer
5结果与分析1电影排名功能展示1mapreduce实现电影排名功能展示电影分组结果展示如1所示,数据类型为1电影分组效果电影求平均值结果展示如2所示,数据类型为2电影求平均值效果电影排序结果展示如3所示,数据类型为正在上传…重新上传取消2pandas实现电影排名功能展示电影分组结果展示如4所示,数据类型为4电影排序效果2取电影ID前20的进行柱状展示5电影分组柱状电影求平均值结果展示如6所示,数据类型为6电影求平均值效果27电影排序柱状电影排序结果展示如8所示,数据类型为8电影排序效果22电影推荐功能展示1mapreduce实现电影推荐功能展示电影推荐——根据用户分组结果展示如9所示,数据类型为9用户分组效果电影推荐——求出用户与用户之间相似度结果展示如10所示,数据类型为10用户与用户之间相似度效果电影推荐——根据电影ID进行分组结果展示如11所示,数据类型为11电影ID进行分组效果电影推荐——根据第二部和第三步的结果进行相乘得出最终结果展示如12所示,数据类型为12电影最终评分效果电影推荐——根据最终推荐评分进行展示结果如13所示,数据类型为13电影最终评分排序效果2pandas实现电影推荐功能展示电影推荐——根据用户分组结果展示如14所示,数据类型为14用户分组效果2选取用户ID为1的各列进行分析,再按照评分进行排序,最后随机选取10列数据进行柱状展示如15所示15用户分组柱状1统计每一位用户所观看的电影数目,并用柱状展示,如16所示:15用户分组柱状2电影推荐——求出用户与用户之间相似度结果展示如16所示,数据类型为16用户与用户之间相似度效果对用户ID和另外的用户ID以及他们之间的相似度进行可视化展示,如17所示:17用户相似度可视化电影推荐——根据电影ID进行分组结果展示如18所示,数据类型为18电影ID进行分组效果电影推荐——根据第二部和第三步的结果进行相乘得出最终结果展示如19所示,数据类型为19电影最终评分效果对用户ID、电影ID、以及推荐评分做一个可视化展示,如20所示:20电影最终评分可视化电影推荐——根据最终推荐评分进行展示结果如21所示,数据类型为21电影推荐评分效果根据最终推荐评分进行推荐展示结果如22所示,数据类型为22电影推荐电影效果对用户的最高的推荐评分进行可视化展示如23所示:23电影推荐评分可视化
6学习体会1遇到问题和解决方法因为这学期刚好学了hadoop和数据导入与预处理两门课程,所以我决定将这两门课程结合起来做一个基于MapReduce+Pandas的电影排名与推荐以及数据分析与可视化展示。数据用的是网上找的数据。在这次课设中,我们遇到了很多问题,因为这次课设中还用到了协同过滤算法,采用两个向量夹角的余弦值作为相似度的计算,比其它的算法简单,高效,高级。在课设期间遇到了很多问题,通过自我修改、查阅相关资料结合实际情况进行修正。再比如数据分析目的不明确,分析思路不明确,对于函数使用不够灵活,描述性分析不太理解等等。我的解决方法是,把老师提供的案例中的代码好好敲了一下,多加练习,问题也就迎刃而解。2收获与感悟通过本次大作业,我收获了很多。懂得了数据处理的流程,以及数据预处理的思想,也学会了pandas中各种函数的使用,其次是数据分析的思想,利用多个方面进行分析,开阔了我的思维,最后的可视化又打开了我形化界面的大门,总之,做了这个大作业,我收获良多。在课设中遇到问题是很正常的,只要设计者具有冷静思考,善于分析的能力,就一定可以解决任何问题。此次课设帮助我们更加理解这一学期学到的知识,并且深刻认识到只学习书本上的知识是远远不够。实践是检验真理的唯一指标,只要亲自动手实践了后,才会更加深入的去理解它,消化它。
[1]赵恩毅,王瑞刚.基于Hadoop平台的聚类协同过滤推荐方法研究[J].计算机与数字工程,2019,47(10):2529-2533+2588. |
[2]张鹏程. 推荐算法自动选择框架的研究与实现[D].沈阳师范大学,2019. |
[3]陈旭. 基于Hadoop的电影推荐系统的研究与实现[D].辽宁大学,2019. |
[4]汪晶. 基于聚类的协同过滤推荐算法研究[D].长江大学,2019. |
[5]张玉叶.基于协同过滤的电影推荐系统的设计与实现[J].电脑知识与技术,2019,15(06):70-73. |
[6]陶华平. 基于Hadoop的电影推荐系统的设计与实现[D].大连理工大学,2018. |
[7]李沂桥. 基于Hadoop平台的电影推荐系统的设计与实现[D].贵州大学,2018. |
wesleyJ.Chun.Python核心编程(第二版[M.人民邮电出版社,201
蔡立,量化投资以python为工具[M,电子工业出版社,2017
吴升.大数据平台中数据分析工具的设计与实现[D].东南大学硕士论文,2015
文章为作者独立观点,不代表股票配资公司观点