spark深度学习例子音乐推荐代码
来源:互联网 发布:产品说明书排版软件 编辑:程序博客网 时间:2024/06/07 06:28
object MusicRecommend { def musicRecommend()={ val conf = new SparkConf().setAppName("musicRecommend") val sc = new SparkContext(conf)// 处理艺术家数据 val rawArtistData = sc.textFile("ds/artist", 4)// 由于文件存在非法行 不是用\t分割的 /*val aritstByID = rawArtistData.map{ l => val (id,name) = l.span(_ != "\t") (id.toInt,name.trim()) }*/ val artistByID = rawArtistData.flatMap{line => val (id,name) = line.span(_ != '\t') if(name.isEmpty()) None else try{ Some((id.toInt,name.trim())) }catch{ case e :Exception => None } }// 处理艺术家别名数据 val rawArtistAlias = sc.textFile("ds/alias") val artistAlias = rawArtistAlias.flatMap{ line => val tokens=line.trim().split("\\s+") if(tokens.length != 2){ None }else{ Some((tokens(0).toInt,tokens(1).toInt)) } }.collectAsMap()// 这里使用广播变量,spark执行一个stage阶段时,会为执行函数建立一个闭包,// 也就是所有任务需要的信息的2进制形式。闭包包含了函数引用的所有数据结构。// spark把这个闭包发送到集群上每个executor上.// 当许多任务使用同一个不可变的数据结构时,我们应该使用广播变量。// 好处是可以在多个作业和阶段stage之间缓存数据 val bArtistAlias = sc.broadcast(artistAlias)// 处理用户收听记录 val rawUserArtistData = sc.textFile("ds/user*")// 生成训练数据 val trainData = rawUserArtistData.map{ line => val Array(userID,artistID,count) = line.split("\\s+").map(_.toInt) val finalArtistID=bArtistAlias.value.getOrElse(artistID, artistID) Rating(userID,finalArtistID,count) }.cache()// 使用训练数据进行训练// MatrixFactorizationModel 其他的参数都是超参数 其值直接影响到最终结果 val model = ALS.trainImplicit(trainData, 10, 5, 0.01, 1.0)// 检查推荐结果是否合理 val userId = 2093760 val rcNum = 5// 1.获取用户2093760的数据 val rawArtistsForUser = rawUserArtistData.map(_.split("\\s+")) .filter{case Array(user,_,_) => user.toInt == userId}// 2.获取用户2093760感兴趣的艺术家集 val existingProducts = rawArtistsForUser.map {case Array(_,artist,_) => artist.toInt} .collect.toSet// 3.找到该艺术家对应的名称,并打印 artistByID.filter{case (id,name) => existingProducts.contains(id) }.values.collect.foreach(println)// 获取该用户的几个推荐结果 val recommendations = model.recommendProducts(userId, rcNum)// 打印推荐结果 recommendations.foreach(println)// 结果构成Rating(userid,artistID,rating)rating表示一个数值,其值越接近1表示推荐结果越好 }}
阅读全文
0 0
- spark深度学习例子音乐推荐代码
- Spark机器学习HelloWorld系列(一)音乐推荐
- spark mllib 之音乐推荐
- 文章学习《使用深度学习Keras和TensorFlow打造一款音乐推荐系统》
- 采用深度学习算法为Spotify做基于内容的音乐推荐
- 采用深度学习算法为Spotify做基于内容的音乐推荐
- 采用深度学习算法为Spotify做基于内容的音乐推荐
- spark机器学习(推荐)
- 深度学习视频教程推荐
- 深度学习推荐博客
- 深度学习课程推荐
- 深度学习+推荐
- 深度学习文章推荐
- 深度学习 tensorflow例子
- 机器学习4-x——音乐推荐系统代码实现
- spark机器学习电影推荐
- spark机器学习电影推荐
- spark学习:2.streaming例子
- 简易版log三秒跳转
- C中输入函数的理解 -- getchar和scanf
- 51nod 1199 Money out of Thin Air[线段树]
- vue2.0使用(一)
- 3.Spring Cloud:服务消费(Ribbon)【Dalston版】
- spark深度学习例子音乐推荐代码
- Windows2008 r2显示桌面上的通用图标(计算机、网络)
- Web容器中DefaultServlet详解
- 初学Python第六天
- linux学习第七篇:环境变量PATH,命令cp,mv以及文档查看cat,more,less,head,tail
- ◆竞赛题目◆◇NOIP2013普及组◇ 小朋友的数字
- MyISAM存储引擎数据表修复
- 欢迎使用CSDN-markdown编辑器
- 20171024memo