zoukankan      html  css  js  c++  java
  • Machine Learning With Spark学习笔记(提取10万电影数据特征)

    注:原文中的代码是在spark-shell中编写运行的,本人的是在eclipse中编写运行,所以结果输出形式可能会与这本书中的不太一样。

    首先将用户数据u.data读入SparkContext中。然后输出第一条数据看看效果。代码例如以下:

    val sc = new SparkContext("local", "ExtractFeatures")
    val rawData = sc.textFile("F:\ScalaWorkSpace\data\ml-100k\u.data")
    println(rawData.first())
    

    注意:第一行代码我创建了spark上下文,假设你是在spark-shell中运行代码。它会自己主动创建好spark上下文,名字为sc,我是在eclipse中编写代码。所以须要自己编写代码创建spark上下文,我们能够看到有例如以下输出:

    这里写图片描写叙述

    每条数据是由“ ”分隔的,我们如今要取出每条数据,然后再取到每条数据的前三个元素。即用户ID。电影ID,用户给电影的评分,代码例如以下:

    val rawRatings = rawData.map(_.split("	").take(3))
    rawRatings.first().foreach(println)
    

    能够看到相似例如以下的输出:
    这里写图片描写叙述

    接下来我们将使用spark内置的MLlib库来训练我们的模型。先来看看有哪些方法能够使用,须要什么參数作为输入。首先我们导入内置库文件ALS:

    import org.apache.spark.mllib.recommendation.ALS
    

    接下来的操作是在spark-shell中完毕的。在控制台下输入ALS.(注意ALS后面有一个点)加上tap键:
    这里写图片描写叙述
    我们将要使用到的方法是train方法。

    假设我们输入ALS.train,会返回一个错误,可是我们能够从这个错误中看看这种方法的细节:
    这里写图片描写叙述
    能够看到,我们最少要提供三个參数:ratings,rank,iterations。第二个方法还须要另外一个參数lambda。我们先来看看參数rating的类Rating:
    这里写图片描写叙述
    我们能够看到,我们须要向ALS模型提供一个包括Rating的RDD。Rating将user id。movie id(就是这里的product)和rating封装起来。

    我们将在评分数据集(rating dataset)上使用map方法。将ID和评分的数组转换成Rating对象:

    val ratings = rawRatings.map {
          case Array(user, movie, rating) =>
            Rating(user.toInt, movie.toInt, rating.toDouble)
        }
    println(ratings.first())
    

    输出例如以下:
    这里写图片描写叙述
    如今我们得到了一个Rating类型的RDD。

  • 相关阅读:
    SA 的参数
    superobject中 JavaToDelphiDateTime的使用
    关于Linux下进程间使用共享内存和信号量通信的时的编译问题
    Linux匿名管道与命名管道
    C++复数四则运算的实现
    C++类编程(一)const的使用
    读书会思考与学期总结
    xenomai安装
    Xenomai 安装准备工作
    Xenomai
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7081952.html
Copyright © 2011-2022 走看看