@@ -59,25 +59,29 @@ import org.apache.spark.mllib.recommendation.Rating
59
59
60
60
// Load and parse the data
61
61
val data = sc.textFile("mllib/data/als/test.data")
62
- val ratings = data.map(_ .split(',') match {
63
- case Array(user, item, rate) => Rating(user.toInt, item.toInt, rate.toDouble)
64
- })
62
+ val ratings = data.map(_ .split(',') match { case Array(user, item, rate) =>
63
+ Rating(user.toInt, item.toInt, rate.toDouble)
64
+ })
65
65
66
66
// Build the recommendation model using ALS
67
67
val rank = 10
68
68
val numIterations = 20
69
69
val model = ALS.train(ratings, rank, numIterations, 0.01)
70
70
71
71
// Evaluate the model on rating data
72
- val usersProducts = ratings.map{ case Rating(user, product, rate) => (user, product)}
73
- val predictions = model.predict(usersProducts).map{
74
- case Rating(user, product, rate) => ((user, product), rate)
72
+ val usersProducts = ratings.map { case Rating(user, product, rate) =>
73
+ (user, product)
75
74
}
76
- val ratesAndPreds = ratings.map{
77
- case Rating(user, product, rate) => ((user, product), rate)
75
+ val predictions =
76
+ model.predict(usersProducts).map { case Rating(user, product, rate) =>
77
+ ((user, product), rate)
78
+ }
79
+ val ratesAndPreds = ratings.map { case Rating(user, product, rate) =>
80
+ ((user, product), rate)
78
81
}.join(predictions)
79
- val MSE = ratesAndPreds.map{
80
- case ((user, product), (r1, r2)) => math.pow((r1- r2), 2)
82
+ val MSE = ratesAndPreds.map { case ((user, product), (r1, r2)) =>
83
+ val err = (r1 - r2)
84
+ err * err
81
85
}.mean()
82
86
println("Mean Squared Error = " + MSE)
83
87
{% endhighlight %}
0 commit comments