Spark上机实验手册_第1页
Spark上机实验手册_第2页
Spark上机实验手册_第3页
Spark上机实验手册_第4页
Spark上机实验手册_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、实验六:Spark MLLib实验 【实验目的】使用SparkMLLib中的推荐算法接口,实现电影推荐,对使用Spark进行推荐有 个直观的认识【实验原理】1、 使用协同过滤算法训练模型2、 调用模型根据用户id和电影推荐的数量进行推荐【实验环境】操作系统:Linux开发环境:pyspark交互式命令行wget :8888/zz/Files/u.userwget :8888/zz/Files/u.datawget :8888/zz/Files/u.itemmv u.user /root/filmmv

2、 u.data /root/filmmv u.item /root/filmpip install numpy -i /simple【实验步骤】MovieLens数据集包含多个用户对多部电影的评级数据,也包括电影元数据信息和用户属性信 息。这个数据集经常用来做推荐系统,机器学习算法的测试数据集。尤其在推荐系统领域,很多 著名论文都是基于这个数据集的。下载地址为:http :/files.group /datasets/movielens/, 本文下 载数据 100k版本,对该数据集进行探索:下载后解压文件,本实验使

3、用其中三个文件,用户信息、影片信息、评分数据。用户信息(u.user)影片信息(u.item)评分数据(u.data)一、 代码实现#读取用户数据user_df=spark.read.text(file:/root/film/u.user)user_df.show(10)#为用户数据添加 schemafrom pyspark import Rowuser_rdd=user_df.rdd.map(lambda x:x0.split(|).map(lambda x:Row(id=x0,age=x1,sex=x2,job=x3,code=x4)user_rdd.take(5)#创建用户 datafr

4、ameuser_df=spark.createDataFrame(user_rdd)#注册临时表user_df.registerTempTable(user)spark.sql(select id,age,sex,job,code from user).show()#读取评分数据rating_df=spark.read.text(file:/root/film/u.data)rating_df.show(5)#为评分数据添加 schemarating_rdd=rating_df.rdd.map(lambda x:x0.split().map(lambda x:Row(user_id=x0,fi

5、lm_id=x1,rating=x2,time=x3)rating_rdd.take(5)#创建评分 dataframerating_df=spark.createDataFrame(rating_rdd)#注册评分临时表rating_df.registerTempTable(rating)spark.sql(select user_id,film_id,rating,time from rating).show()#读取电影信息film_df=spark.read.text(file:/root/film/u.item)film_df.show(5)#为电影数据添加 schemafilm_r

6、dd=film_df.rdd.map(lambda x:x0.split(|).map(lambda x:Row(id=x0,title=x1,post_time=x2,url=x4)film_rdd.take(5)#创建电影 dataframefilm_df=spark.createDataFrame(film_rdd)#注册电影临时表film_df.registerTempTable(film)spark.sql(select * from film).show()#导入 Spark 机器学习包: 协同过滤算法(需要之前安装好numpy)from pyspark.mllib.recomme

7、ndation import ALS#ALS.trainImplicit 中第一个参数 RDD 是固定格式( 用户编号, 电影编号, 评分值)rdd=rating_rdd.map(lambda x:(x3,x0,x1)rdd.take(5)#训练模型train参数见/weixin_40717296/article/details/79695694model=ALS.train(rdd,10,10,0.01)#使用模型进行推荐, 参数为用户 id, 推荐个数user_film=model.recommendProducts(112,3)print(user

8、_film)#显示推荐电影名称type(user_film)for film in user_film: spark.sql(select id ,title,post_time,url , +str(film2)+ as similar from film where id=+str(film1).show()#查看用户看过的电影spark.sql(select a.user_id,b.title from rating a,film b where a.film_id=b.id and a.user_id=112).show()#保存模型import osimport shutilsave_path=/root/film/modelif os.path.exists(save_path): shutil.rmtree(save_path)model.save(sc,save_path)print(model saved!)#调用模型from pyspark.mllib.recommendation import MatrixFactorizationModelmodel=MatrixFactorizationModel.load(sc,save_path)result=model.recommendPr

温馨提示

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

评论

0/150

提交评论