scala – 在ALS模型中计算RMSE
发布时间:2020-12-16 08:45:16 所属栏目:安全 来源:网络整理
导读:我想在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).
我想在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”. var predictions = model.predict(usersProducts).map { case Rating(user,product,rate) => ((user,product),rate) } val ratesAndPreds = ratings.map { case Rating(user,rate) => ((user,rate) }.join(predictions) val rmse= math.sqrt(ratesAndPreds.map { case ((user,(r1,r2)) => val err = (r1 - r2) err * err }.mean())println(s"RMSE = $rmse") 这不能在这里使用.怎么做? 解决方法
这似乎是一个缺陷.有关更多信息,请查看此Spark JIRA:
https://issues.apache.org/jira/browse/SPARK-14489
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读