gpt4 book ai didi

scala - 计算 ALS 模型中的 RMSE

转载 作者:行者123 更新时间:2023-12-03 03:16:39 26 4
gpt4 key购买 nike

我想计算 ALS 模型中的 RMSE,我找到这样的代码:

    val ratings = data.map(_.split(',') match {
case Array(user,item,rate)
=>
Rating(user.toLong,item.toInt,rate.toFloat)
})

val ratingsDF= ratings.toDF

val model = new ALS().setRank(3).setMaxIter(10).fit(ratingsDF)
val predictions = model.transform(ratingsDF)
val evaluator = new RegressionEvaluator().setMetricName("rmse").setLabelCol("rating").setPredictionCol("prediction")
val rmse = evaluator.evaluate(predictions)
System.out.println("Root-mean-square error = " + rose)

但是,我得到“NaN”。我想知道是我使用的方法不对还是数据本身的问题。如果代码错误,计算 RMSE 的正确方法是什么?我只找到这样的方法:

    var predictions = model.predict(usersProducts).map { case Rating(user, product, rate) =>        ((user, product), rate)    }
val ratesAndPreds = ratings.map { case Rating(user, product, rate) => ((user, product), rate) }.join(predictions)
val rmse= math.sqrt(ratesAndPreds.map { case ((user, product), (r1, r2)) => val err = (r1 - r2) err * err }.mean())println(s"RMSE = $rmse")

这不能在这里使用。怎么做?

最佳答案

这似乎是一个缺陷。有关更多信息,请查看此 Spark JIRA:https://issues.apache.org/jira/browse/SPARK-14489

When building a Spark ML pipeline containing an ALS estimator, the metrics "rmse", "mse", "r2" and "mae" all return NaN.

关于scala - 计算 ALS 模型中的 RMSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38237218/

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