educoder-Spark机器学习

这篇具有很好参考价值的文章主要介绍了educoder-Spark机器学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第1关:基于物品的推荐算法

        给用户2推荐2个商品。利用spark.mllib中的矩阵计算库,构建用户与物品的打分矩阵,然后计算物品之间的相似分数,进行推荐。实现基于用户(User CF)的协同过滤算法。文章来源地址https://www.toymoban.com/news/detail-477768.html

import org.apache.log4j.{Level, Logger}
import org.apache.spark.mllib.linalg.SparseVector
import org.apache.spark.mllib.linalg.distributed.{CoordinateMatrix, IndexedRow, MatrixEntry, RowMatrix}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object ItemBasedCF {
  def main(args: Array[String]): Unit = {

    Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
    Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)

    //读入数据
    val conf = new SparkConf().setAppName("ItemBasedCFModel").setMaster("local")
    val sc = new SparkContext(conf)
    val data = sc.textFile("/root/data/als/ratingdata.txt")

    /*MatrixEntry代表一个分布式矩阵中的每一行(Entry)
     * 这里的每一项都是一个(i: Long, j: Long, value: Double) 指示行列值的元组tuple。
     * 其中i是行坐标,j是列坐标,value是值。*/
    val parseData: RDD[MatrixEntry] =
      data.map(_.split(",") match { case Array(user, item, rate) => MatrixEntry(user.toLong, item.toLong, rate.toDouble) })

    //CoordinateMatrix是Spark MLLib中专门保存user_item_rating这种数据样本的
    val ratings = new CoordinateMatrix(parseData)

    /* 由于CoordinateMatrix没有columnSimilarities方法,所以我们需要将其转换成RowMatrix矩阵,调用他的columnSimilarities计算其相似性
     * RowMatrix的方法columnSimilarities是计算,列与列的相似度,现在是user_item_rating,与基于用户的CF不同的是,这里不需要进行矩阵的转置,直接就是物品的相似*/
     
    val matrix: RowMatrix = ratings.toRowMatrix()

    //需求:为某一个用户推荐商品。基本的逻辑是:首先得到某个用户评价过(买过)的商品,然后计算其他商品与该商品的相似度,并排序;从高到低,把不在用户评价过
    //商品里的其他商品推荐给用户。
    //例如:为用户2推荐商品

    //第一步:得到用户2评价过(买过)的商品  take(5)表示取出所有的5个用户  2:表示第二个用户
    //解释:SparseVector:稀疏矩阵
    val user2pred = matrix.rows.take(5)(2)
    val prefs: SparseVector = user2pred.asInstanceOf[SparseVector]
    val uitems = prefs.indices //得到了用户2评价过(买过)的商品的ID
    val ipi = (uitems zip prefs.values) //得到了用户2评价过(买过)的商品的ID和评分,即:(物品ID,评分)

    //计算物品的相似性,并输出
    val similarities = matrix.columnSimilarities()
    val indexdsimilar = similarities.toIndexedRowMatrix().rows.map {
      case IndexedRow(idx, vector) => (idx.toInt, vector)
    }

    //ij表示:其他用户购买的商品与用户2购买的该商品的相似度
    val ij = sc.parallelize(ipi).join(indexdsimilar).flatMap {
      case (i, (pi, vector: SparseVector)) => (vector.indices zip vector.values)
    }

	/********** begin **********/
    //ij1表示:其他用户购买过,但不在用户2购买的商品的列表中的商品和评分
    val ij1 = ij.filter { case (item, pref) => !uitems.contains(item) }

    //将这些商品的评分求和,并降序排列,并推荐前两个物品
    val ij2 = ij1.reduceByKey(_ + _).sortBy(_.

到了这里,关于educoder-Spark机器学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于机器学习的内容推荐算法及其心理学、社会学影响闲谈

    基于机器学习的内容推荐算法目前在各类内容类APP中使用的非常普遍。在购物、时尚、新闻咨询、学习等领域,根据用户的喜好,进行较为精准的用户画像与内容推荐。此类算法不但可以较为准确的分析用户的特征,如年龄、性别等,还能通过长期的跟踪维护,大致确定用户

    2024年02月07日
    浏览(38)
  • 机器学习笔记 - 使用 ResNet-50 和余弦相似度的基于图像的推荐系统

    一、简述         这里的代码主要是基于图像的推荐系统,该系统利用 ResNet-50 深度学习模型作为特征提取器,并采用余弦相似度来查找给定输入图像的最相似嵌入。         该系统旨在根据所提供图像的视觉内容为用户提供个性化推荐。 二、所需环境 Python 3.x tenso

    2024年02月12日
    浏览(24)
  • 基于Spark的电影推荐系统实现

    未经许可,禁止以任何形式转载,若要引用,请标注链接地址 全文共计7821字,阅读大概需要3分钟 受某视频网站委托,需开发一套基于Spark的大数据机器学习系统,应用协同过滤算法对网站客户进行电影推荐。 本案例所使用的数据集说明如下:   评分数据集:/data/dataset

    2024年02月08日
    浏览(33)
  • 基于Pandas+余弦相似度+大数据智能护肤品推荐系统——机器学习算法应用(含Python工程源码)+数据集

    本项目结合了Pandas数据处理工具和机器学习技术,旨在构建一个智能的护肤品推荐系统。该系统不仅会考虑用户的肤质特征,还会考虑过敏反应等因素,并筛选出相互禁忌的产品,以便为不确定如何选择护肤品的用户提供个性化的推荐。 首先,项目会收集用户的肤质信息,包

    2024年02月07日
    浏览(26)
  • Python+Django+Mysql开发简单在线课程推荐系统简单教程 基于用户的协同过滤推荐算法 个性化课程推荐系统 爬虫 可视化数据分析 机器学习 人工智能 个性化推荐 相关推荐

    1、开发工具和使用技术 Python3及以上版本,Django3.6及以上版本,mysql8,navicat数据库管理工具或者sqlyog数据库管理工具,html页面,javascript脚本,jquery脚本,echarts.js可视化图表工具,自定义星星评分功能(使用font-awesome星星图标字体)等。 2、实现功能 前台首页地址:http://1

    2024年02月05日
    浏览(48)
  • 基于SVM+TensorFlow+Django的酒店评论打分智能推荐系统——机器学习算法应用(含python工程源码)+数据集+模型(一)

    本项目以支持向量机(SVM)技术为核心,利用酒店评论数据集进行了情感分析模型的训练。通过使用Word2Vec生成词向量,该项目实现了一个打分推荐系统,其中服务器端提供数据,而客户端则查询数据。 首先,项目使用了酒店评论数据集,这些评论包括了来自不同用户的对酒

    2024年02月07日
    浏览(30)
  • 基于spark法律服务大数据智能推荐

    背景 随着互联网和信息技术的快速发展,电子商务、网上服务与交易等网络业务越来越普及,这些操作会产生大量数据(或海量数据),用户想要从海量数据中快速准确地寻找到自己感兴趣的信息已经变得越来越困难,这也就造就了搜索引擎的诞生,应用比较广泛的如Googl

    2024年02月10日
    浏览(31)
  • Spark数据源educoder

    第1关:SparkSQL加载和保存         在右侧编辑器补充代码,加载 people.json 文件,以覆盖的方式保存到 people 路径里,继续加载 people1.json 文件,以附加的方式保存到 people 路径里,最后以表格形式显示 people 里前 20 行 Dataset 。

    2024年02月04日
    浏览(38)
  • Spark Hive实现基于协同过滤的电影推荐(MovieLens数据集)

      这篇文章记录一下我之前做过的通过Spark与Hive实现的基于协调过滤的电影推荐。这篇文章只能提供算法、思路和过程记录,并没有完整的代码,仅尽量全面地记录过程细节方便参考。   数据集是从下面这个地址下载的,数据集主要内容是关于用户对电影的评分、评价等。免

    2024年02月10日
    浏览(36)
  • [机器学习、Spark]Spark MLlib机器学习

    👨‍🎓👨‍🎓博主:发量不足 📑📑本期更新内容: Spark MLlib 机器学习 算法库 📑📑下篇文章预告: Spark机器学习库 MLlib 的概述 💨💨简介:分享的是一个当代疫情在校封校的大学生学习笔记 目录 初始机器学习 一. 什么是机器学习 二.机器学习的应用   一. 什么是

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包