scala – Spark 2.0 ALS建议如何向用户推荐
发布时间:2020-12-16 09:51:42 所属栏目:安全 来源:网络整理
导读:我已按照链接中的指南进行操作 http://ampcamp.berkeley.edu/big-data-mini-course/movie-recommendation-with-mllib.html 但这已经过时,因为它使用了spark Mlib RDD方法. New Spark 2.0具有DataFrame方法. 现在我的问题是我有更新的代码 val ratings = spar
我已按照链接中的指南进行操作
http://ampcamp.berkeley.edu/big-data-mini-course/movie-recommendation-with-mllib.html 但这已经过时,因为它使用了spark Mlib RDD方法. New Spark 2.0具有DataFrame方法. val ratings = spark.read.textFile("data/mllib/als/sample_movielens_ratings.txt") .map(parseRating) .toDF() val Array(training,test) = ratings.randomSplit(Array(0.8,0.2)) // Build the recommendation model using ALS on the training data val als = new ALS() .setMaxIter(5) .setRegParam(0.01) .setUserCol("userId") .setItemCol("movieId") .setRatingCol("rating") val model = als.fit(training) // Evaluate the model by computing the RMSE on the test data val predictions = model.transform(test) 现在问题是,在旧代码中,获得的模型是MatrixFactorizationModel,现在它有自己的模型(ALSModel) 在MatrixFactorizationModel中你可以直接做 val recommendations = bestModel.get .predict(userID) 这将给出用户喜欢它们的概率最高的产品列表. 但现在没有.predict方法.任何想法如何推荐给定用户ID的产品列表 解决方法
在模型上使用transform方法:
import spark.implicits._ val dataFrameToPredict = sparkContext.parallelize(Seq((111,222))) .toDF("userId","productId") val predictionsOfProducts = model.transform (dataFrameToPredict) 有一个jira票证来实现推荐(用户|产品)方法,但它还没有在默认分支上 现在你有了DataFrame和用户分数 您只需使用orderBy和limit来显示N个推荐产品: // where is for case when we have big DataFrame with many users model.transform (dataFrameToPredict.where('userId === givenUserId)) .select ('productId,'prediction) .orderBy('prediction.desc) .limit(N) .map { case Row (productId: Int,prediction: Double) => (productId,prediction) } .collect() DataFrame dataFrameToPredict可以是一些大??型用户产品DataFrame,例如所有用户x所有产品 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |