gpt4 book ai didi

scala - 为什么 Spark ML ALS 算法打印 RMSE = NaN?

转载 作者:行者123 更新时间:2023-11-30 08:32:58 25 4
gpt4 key购买 nike

我使用 ALS 来预测评分,这是我的代码:

val als = new ALS()
.setMaxIter(5)
.setRegParam(0.01)
.setUserCol("user_id")
.setItemCol("business_id")
.setRatingCol("stars")
val model = als.fit(training)

// Evaluate the model by computing the RMSE on the test data
val predictions = model.transform(testing)
predictions.sort("user_id").show(1000)
val evaluator = new RegressionEvaluator()
.setMetricName("rmse")
.setLabelCol("stars")
.setPredictionCol("prediction")
val rmse = evaluator.evaluate(predictions)
println(s"Root-mean-square error = $rmse")

但是得到一些负分,RMSE 为 Nan:

+-------+-----------+---------+------------+
|user_id|business_id| stars| prediction|
+-------+-----------+---------+------------+
| 0| 2175| 4.0| 4.0388923|
| 0| 5753| 3.0| 2.6875196|
| 0| 9199| 4.0| 4.1753435|
| 0| 16416| 2.0| -2.710618|
| 0| 6063| 3.0| NaN|
| 0| 23076| 2.0| -0.8930751|

Root-mean-square error = NaN

如何获得好的结果?

最佳答案

负值并不重要,因为 RMSE 首先对值进行平方。可能您的预测值是空的。你可以删除它们:

predictions.na().drop(["prediction"])

尽管这可能有点误导,但您也可以用您的最低/最高/平均评分填充这些值。

我还建议四舍五入x < min_ratingx > max_rating最低/最高评级,这将提高您的 RMSE。

编辑:

这里有一些额外信息:https://issues.apache.org/jira/browse/SPARK-14489

关于scala - 为什么 Spark ML ALS 算法打印 RMSE = NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43544815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com