0
我目前正在计划为MovieLens数据集上的用户使用ALS算法生成电影推荐一切正常,但有些时候ALS算法会返回已评级的电影,我想从建议中排除它们,建议如下。如何生成个人建议的用户,排除他评为斯卡拉正在使用spark MLlib ALS算法的电影?
`val moviesRatedbyUser = ratings.keyBy(_._2.user).lookup(206547)
println("rated movies are" + moviesRatedbyUser)
val candidates =
sc.parallelize(movies.keys.filter(!moviesRatedbyUser(_)).toSeq)
val recommendations = bestModel.get
.predict(candidates.map((206547, _)))
.collect()
.sortBy(- _.rating)
.take(10)
var i = 1
println("Movies recommended for you:")
recommendations.foreach { r =>
println("%2d".format(i) + ": " + movies(r.product))
i += 1
}`
在这里,我试图评级查找用户ID RDD打印语句返回 moviesRatedbyUser: Seq[(Long, org.apache.spark.mllib.recommendation.Rating)] = WrappedArray((3,Rating(206547,80,1.0)))
我想知道我怎么只抓住(在这种情况下80)的movieid,这样我可以排除它从建议中产生