Spark MLlib ALS 中的非整数 ID
Non-integer ids in Spark MLlib ALS
我想使用
val ratings = data.map(_.split(',') match {
case Array(user,item,rate)
=>
Rating(user.toInt,item.toInt,rate.toFloat)
})
val model = ALS.train(ratings,rank,numIterations,alpha)
但是,我得到的用户数据存储为Long。当切换为 int 时,可能会产生错误。
我该如何解决这个问题?
您可以使用支持 Long
标签的 ML 实现之一。 RDD
版本与其他实现相比用户友好性明显降低:
import org.apache.spark.ml.recommendation.ALS
import org.apache.spark.ml.recommendation.ALS.Rating
val ratings = sc.parallelize(Seq(Rating(1L, 2L, 3.0f), Rating(2L, 3L, 5.0f)))
val (userFactors, itemFactors) = ALS.train(ratings)
和returns只影响DataFrame
版本returns一个模型:
val ratingsDF= ratings.toDF
val alsModel = new ALS().fit(ratingsDF)
我想使用
val ratings = data.map(_.split(',') match {
case Array(user,item,rate)
=>
Rating(user.toInt,item.toInt,rate.toFloat)
})
val model = ALS.train(ratings,rank,numIterations,alpha)
但是,我得到的用户数据存储为Long。当切换为 int 时,可能会产生错误。 我该如何解决这个问题?
您可以使用支持 Long
标签的 ML 实现之一。 RDD
版本与其他实现相比用户友好性明显降低:
import org.apache.spark.ml.recommendation.ALS
import org.apache.spark.ml.recommendation.ALS.Rating
val ratings = sc.parallelize(Seq(Rating(1L, 2L, 3.0f), Rating(2L, 3L, 5.0f)))
val (userFactors, itemFactors) = ALS.train(ratings)
和returns只影响DataFrame
版本returns一个模型:
val ratingsDF= ratings.toDF
val alsModel = new ALS().fit(ratingsDF)