package com.lj.als import org.apache.spark.mllib.recommendation.{ALS, Rating} import org.apache.spark.{SparkConf, SparkContext} object Driver { def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("als") val sc = new SparkContext(conf) val data = sc.textFile("e://data/als.txt") //--为了满足Spark建模要求: //--RDD[String]->RDD[Rating(userId[Int],itemId[Int],score[Double])] val r1 = data.map { line => val info = line.split(" ") val userId = info(0).toInt val itemId = info(1).toInt val score = info(2).toDouble Rating(userId, itemId, score) } // r1.foreach(println) //--①参:数据集 ②参:隐藏因子数 K,根据实际情况来定 ③参:最大的迭代次数 ④参:λ 正则化参数,防止模型过拟合 val model = ALS.train(r1, 3, 10, 0.01) val u5Result = model.recommendProducts(5, 2) //--下面表示为5号用户,推荐两个商品 val item12Result = model.recommendUsers(12, 1) //--下面表示为12号商品,推荐1个用户 val u3Predict = model.predict(3, 14) //--下面表示预测3号用户对14号商品的评分 u5Result.foreach {println} item12Result.foreach {println} println(u3Predict) } }
时间: 2024-03-18 18:44:56 浏览: 124
基于Spark MLlib ALS的音乐推荐系统.zip
5星 · 资源好评率100%
这是一个使用 Apache Spark 中的 ALS(Alternating Least Squares)算法进行推荐的例子,包含以下步骤:
1. 导入需要使用的包,其中包括 ALS 算法和 Rating 类。
2. 创建 SparkConf 和 SparkContext 对象。
3. 使用 SparkContext 的 textFile 方法读取数据集文件,该文件中每行包含一个用户 ID、一个物品 ID 和一个评分,用空格分隔。
4. 将数据集 RDD[String] 转换为 RDD[Rating],其中每个 Rating 对象包含一个用户 ID、一个物品 ID 和一个评分。
5. 调用 ALS.train 方法,传入 RDD[Rating]、隐藏因子数 K、最大的迭代次数和正则化参数 λ,训练 ALS 模型。
6. 调用 ALS 模型的 recommendProducts 方法,传入一个用户 ID 和要推荐的物品数,得到该用户可能喜欢的物品列表。
7. 调用 ALS 模型的 recommendUsers 方法,传入一个物品 ID 和要推荐的用户数,得到可能喜欢该物品的用户列表。
8. 调用 ALS 模型的 predict 方法,传入一个用户 ID 和一个物品 ID,得到该用户对该物品的评分预测值。
9. 输出结果。
希望对你有所帮助!
阅读全文