【spark系列7】协同过滤之ALS

来源:互联网 发布:手机屏幕条纹修复软件 编辑:程序博客网 时间:2024/04/25 20:09

其它步骤请参考【系列4】


注意


单机跑的时候迭代次数如果过大,会出现栈溢出问题。

这里迭代次数设置为5。



scala程序

import org.apache.spark.mllib.recommendation.ALSimport org.apache.spark.mllib.recommendation.Ratingobject ObALS{    def run(){        // Load and parse the data        val data = sc.textFile("D:/schoolar_tool/spark-0.9.1/mllib/data/als/test.data")        val ratings = data.map(_.split(',') match {            case Array(user, item, rate) =>  Rating(user.toInt, item.toInt, rate.toDouble)        })        // Build the recommendation model using ALS        val numIterations = 5        val model = ALS.train(ratings, 1, numIterations, 0.01)        // Evaluate the model on rating data        val usersProducts = ratings.map{ case Rating(user, product, rate)  => (user, product)}        val 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 MSE = ratesAndPreds.map{            case ((user, product), (r1, r2)) =>  math.pow((r1- r2), 2)        }.reduce(_ + _)/ratesAndPreds.count        println("Mean Squared Error = " + MSE)    }}

运行

scala> ObALS.run


效果




0 0
原创粉丝点击