spark-MLlib

测试数据

用户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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值