我正在关注documentation example来构建推荐系统 ,我创建ALS构造函数都很好
val als = new ALS()
.setMaxIter(maxIterations)
.setRegParam(regressionParam)
.setUserCol("user_id")
.setItemCol("item_id")
.setRatingCol("rating")
val model = als.fit(trainData)
val predictions = model.transform(testData)
println("predictions"+predictions.show(80))
val evaluator = new RegressionEvaluator()
.setMetricName("rmse")
.setLabelCol("rating")
.setPredictionCol("prediction")
val rmse = evaluator.evaluate(predictions)
println(s"Root-mean-square error = $rmse")
predictions
我训练模型,设置一切,但我的主要问题是我可以用测试数据预测,它返回我传递给它的每个项目ID的预测因子但我实际上需要模型可以建议我来自的项目user_id不通过添加预测列来预测项ID的合适程度。 org.apache.spark.ml.recommendation.ALS可以这样做吗?
答案 0 :(得分:2)
目前要为user_id = 1的用户推荐10个热门项目,您必须执行以下操作:
val predictionsForUser1 = predictions
.where(col("user_id") === 1)
.orderBy(col("predictions").desc)
.limit(10)
在下一个Spark版本中,它将以更加用户友好的方式实现