当前位置:   article > 正文

spark-MLlib

spark-MLlib

测试数据

  1. 用户ID,物品ID,评分
  2. 1,101,5.0
  3. 1,102,3.0
  4. 1,103,2.5
  5. 2,101,2.0
  6. 2,102,2.5
  7. 2,103,5.0
  8. 2,104,2.0
  9. 3,101,2.5
  10. 3,104,4.0
  11. 3,105,4.5
  12. 3,107,5.0
  13. 4,101,5.0
  14. 4,103,3.0
  15. 4,104,4.5
  16. 4,106,4.0
  17. 5,101,4.0
  18. 5,102,3.0
  19. 5,103,2.0
  20. 5,104,4.0
  21. 5,105,3.5
  22. 5,106,4.0

(余弦相似度)基于用户id的智能推荐算法

  1. package ml
  2. import org.apache.spark.{SparkConf, SparkContext}
  3. import org.apache.spark.mllib.linalg.distributed.{CoordinateMatrix, MatrixEntry, RowMatrix}
  4. import org.apache.spark.rdd.RDD
  5. /**
  6. * 基于用户的协调过滤
  7. */
  8. object UserBasedCF {
  9. def main(args: Array[String]): Unit = {
  10. val conf = new SparkConf().setAppName(this.getClass.getSimpleName).setMaster("local[*]")
  11. //创建一个sparkContext
  12. val sc = new SparkContext(conf)
  13. //读取数据
  14. val data: RDD[String] = sc.textFile(args(0))
  15. //使用模式匹配,返回矩阵基础数据
  16. /**
  17. * 这里的每一项都是(i:Long , j:Long , value:double)标示行列值得元组
  18. * 其中i标示坐标,j标示列坐标,value是值
  19. */
  20. val parseData: RDD[MatrixEntry] = data.map(_.split(",")
  21. match {
  22. case Array(user, item, rate) => MatrixEntry(user.toLong, item.toLong, rate.toDouble)
  23. })
  24. //构造评分矩阵
  25. val ratings: CoordinateMatrix = new CoordinateMatrix(parseData)
  26. val entries: Array[MatrixEntry] = ratings.entries.collect()
  27. entries.foreach(println(_))
  28. println("-------------------------------------------------------")
  29. //得到某个用户对所有物品的评分,以用户1为例
  30. val ratingsOfUs
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号