赞
踩
测试数据
- 用户ID,物品ID,评分
- 1,101,5.0
- 1,102,3.0
- 1,103,2.5
- 2,101,2.0
- 2,102,2.5
- 2,103,5.0
- 2,104,2.0
- 3,101,2.5
- 3,104,4.0
- 3,105,4.5
- 3,107,5.0
- 4,101,5.0
- 4,103,3.0
- 4,104,4.5
- 4,106,4.0
- 5,101,4.0
- 5,102,3.0
- 5,103,2.0
- 5,104,4.0
- 5,105,3.5
- 5,106,4.0
(余弦相似度)基于用户id的智能推荐算法
- package ml
-
- import org.apache.spark.{SparkConf, SparkContext}
- import org.apache.spark.mllib.linalg.distributed.{CoordinateMatrix, MatrixEntry, RowMatrix}
- import org.apache.spark.rdd.RDD
-
- /**
- * 基于用户的协调过滤
- */
- object UserBasedCF {
- def main(args: Array[String]): Unit = {
- val conf = new SparkConf().setAppName(this.getClass.getSimpleName).setMaster("local[*]")
-
- //创建一个sparkContext
- val sc = new SparkContext(conf)
-
- //读取数据
- val data: RDD[String] = sc.textFile(args(0))
-
- //使用模式匹配,返回矩阵基础数据
- /**
- * 这里的每一项都是(i:Long , j:Long , value:double)标示行列值得元组
- * 其中i标示坐标,j标示列坐标,value是值
- */
- val parseData: RDD[MatrixEntry] = data.map(_.split(",")
- match {
- case Array(user, item, rate) => MatrixEntry(user.toLong, item.toLong, rate.toDouble)
- })
-
- //构造评分矩阵
- val ratings: CoordinateMatrix = new CoordinateMatrix(parseData)
- val entries: Array[MatrixEntry] = ratings.entries.collect()
- entries.foreach(println(_))
- println("-------------------------------------------------------")
-
- //得到某个用户对所有物品的评分,以用户1为例
- val ratingsOfUs
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。