十sparkmllib的scala示例(代码片段)

lay2017 lay2017     2023-02-01     176

关键词:

简介

spark MLlib官网:http://spark.apache.org/docs/latest/ml-guide.html

mllib是spark core之上的算法库,包含了丰富的机器学习的一系列算法。你可以通过简单的API来构建算法模型,然后利用模型来进行预测分析推荐之类的。

它包含了一些工具,如:

1)算法工具:分类、回归、聚类、协同等

2)特征化工具:特征提取、转换、降维、选择等

3)管道:用于构建、评估和调整机器学习管道的工具

4)持久性:保存和加载算法、模型、管道

5)实用工具:线性代数、统计、数据处理等工具

spark MLlib支持的算法很丰富,以下将以ALS推荐算法为例,简单使用MLlib

ALS简介

目前热门的推荐算法主要是协同过滤算法,而ALS(alternate least square:交替最小二乘法)指的是使用最小二乘法的协同过滤算法。

ALS在mllib.recommendation.ALS中,使用步骤如下:

1)输入RDD,类型为mllib.recommendation.Rating

2)调用train方法训练出模型,类型未mllib.recommendation.MatrixFactorizationModel

有了ALS模型以后,我们可以利用这个模型去做一些预测

代码示例

以下代码,使用Array数组模拟了一份简单的数据(用户ID, 商品ID, 评分),并生成RDD。

我们将RDD作为输入,进行模型训练。而后,我们拿训练好的模型进行预测:用户ID=1,产品ID=2的评分

import org.apache.spark.mllib.recommendation.ALS, MatrixFactorizationModel, Rating
import org.apache.spark.rdd.RDD
import org.apache.spark.SparkConf, SparkContext

/**
  * @Description spark 协同过滤推荐算法示例
  * @Author lay
  * @Date 2018/12/10 22:29
  */
object SparkALSDemo 
  var conf: SparkConf = _
  var sc: SparkContext = _
  var data: Array[String] = Array("1,1,1.0", "1,2,2.0", "1,3,4.5", "2,3,4.0", "2,4,5.0")
  var dataRDD: RDD[(Int, Int, Float)] = _
  var ratings: RDD[Rating] = _
  var model: MatrixFactorizationModel = _

  def init: Unit = 
    conf = new SparkConf().setAppName("spark als demo").setMaster("local")
    sc = new SparkContext(conf)
  

  def makeRdd: Unit = 
    dataRDD = sc.parallelize(data).mapx => val lines = x.split(","); (lines(0).toInt, lines(1).toInt, lines(2).toFloat)
    ratings = dataRDD.map(x => Rating(x._1, x._2, x._3))
  

  def trainModel: Unit = 
    val rank = 10 // 向量大小,默认10
    val iterations = 10 // 迭代次数,默认10
    model = ALS.train(ratings, rank, iterations)
  

  def main(args: Array[String]): Unit = 
    // 初始化
    init
    // 生成RDD
    makeRdd
    // 训练模型
    trainModel
    // 预测结果
    val result = model.predict(1, 2)
    println("预测评分:" + result)
  

输出结果为:

预测评分:1.9874704066075966

我们看到预测数据与我们的训练数据 “2” 近似

以上代码只是做了一个简单的过程演示,大体了解MLlib的过程是个什么样的概念。

在实际项目中,输入数量可能是海量的,并且会有训练数据和校验数据。在不断地训练和校验过程当中去迭代算法实现不断地逼近实际值,从而达到满意的结果。所以,除了模型训练过程外,机器学习中对模型的精确校验也是很重要的,它的结果标识着你的模型训练是否是一个有使用价值的模型。

spark MLlib的其它算法也是类似的使用,你只需要给它数据,然后训练模型,便可以利用模型来预测分析分类等

 

通过python扩展sparkmllib算法包(e.g.基于spark使用孤立森林进行异常检测)(代码片段)

文章大纲基于scala利用base64编码实现scala调用python的复杂传参base64编码简介实现scala传递嵌套json【包含python代码】给python并执行使用python对字符串代码参数运行的封装类基于scala利用base64编码实现scala调用python的复杂传参base64编码... 查看详情

十sparksql的scala示例

简介spark SQL官网:http://spark.apache.org/docs/latest/sql-programming-guide.htmlsparkSQL是构建在sparkCore之上的组件,用于处理结构化的数据。它将数据抽象为DataFrame并提供丰富的API,并且sparkSQL允许使用SQL脚本进行操作,使得数据查询变得... 查看详情

scala加载sparkmllib等所有相关jar的问题

1、找到spark安装目录  E:\\spackLearn\\spark-2.3.3-bin-hadoop2.7\\jars  里面放的是spark的所有依赖jar包2、从idea里面javalib导入即可调用里面的function  查看详情

通过python扩展sparkmllib算法包(e.g.基于spark使用孤立森林进行异常检测)

...检测【孤立森林IsolationForest】scala调用测试类scala封装为sparkmllibtransform流程参考文献基于scal 查看详情

假期学习进度十三(代码片段)

...载时间与网速有关。成功后如图2所示) Scala应用程序代码在终端中执行如下命令创建一个文件夹sparkapp作为应用程序根目录:在./sparkapp/src/main/scala下建立一个名为SimpleApp.scala的文件(vim./sparkapp/src/main/scala/SimpleApp.scala),添... 查看详情

sparkmllib算法调用展示平台及其实现过程(代码片段)

1.软件版本:IDE:IntellijIDEA14,Java:1.7,Scala:2.10.6;Tomcat:7,CDH:5.8.0; Spark:1.6.0-cdh5.8.0-hadoop2.6.0-cdh5.8.0; 查看详情

学习笔记spark——sparkmllib应用——sparkmllib应用(代码片段)

三、SparkMLlib应用3.1、SparkML线性模型数据准备基于SparkML的线性模型需要DataFrame类型的模型数据,DataFrame需要包含:一列标签列,一列由多个特征合并得到的特征列训练模型模型应用模型评估任务1:某专门面向年轻人制... 查看详情

学习笔记spark——sparkmllib应用——sparkmllib应用(代码片段)

三、SparkMLlib应用3.1、SparkML线性模型数据准备基于SparkML的线性模型需要DataFrame类型的模型数据,DataFrame需要包含:一列标签列,一列由多个特征合并得到的特征列训练模型模型应用模型评估任务1:某专门面向年轻人制... 查看详情

sparkmllib速成宝典基础篇01windows下spark开发环境搭建(scala版)

目录  安装jdk  安装ScalaIDEforEclipse  配置Spark  配置Hadoop  创建Maven工程  Scala代码  条目7  条目8  条目9 安装jdk  要求安装jdk1.8或以上版本。 返回目录 安装ScalaIDEforEclipse   无需额外安装... 查看详情

使用scala做机器学习模型主要步骤示例(代码片段)

本文介绍使用scala做机器学习模型的一个主要步骤示例。这里主要列了些基本环节,可以在此基础上进行扩充。objectmlExampledefmain(args:Array[String]):Unit=valspark=SparkSession.builder().appName("TobyGao").enableHiveSupport().getO 查看详情

学习进度十三(scala独立应用编程)(代码片段)

环境如下:Hadoop2.6.0以上javaJDK1.7以上Spark3.0.0-preview2 一、Scala独立应用编程1、安装sbtsbt是一款Spark用来对scala编写程序进行打包的工具,这里简单介绍sbt的安装过程,感兴趣的读者可以参考官网资料了解更多关于sbt的内容。Spar... 查看详情

sparkmllib数据类型(代码片段)

  MLlib支持几种数据类型:本地向量(localvectors),和存储在本地或者基于RDD的分布式矩阵(matrices)。底层的线性代数转换操作是基于Breeze和jblas实现的。在MLlib中有监督学习算法使用的训练样本数据类型被称为“带标签的... 查看详情

大数据sparkmllib机器学习(代码片段)

目录1什么是SparkMLlib?2支持的数据类型2.1本地向量集2.1.1、密集型数据集2.1.2稀疏型数据集2.2向量标签2.3本地矩阵2.4分布式矩阵2.4.1行矩阵2.4.2行索引矩阵2.4.3坐标矩阵2.4.4分块矩阵3RDD、DataSet、Dataframe区别及转化1什么是SparkMLlib... 查看详情

scala学习之tuples和oop示例(代码片段)

文章目录AFEWMISCELLANEOUSITEMSTUPLESAfewmoretupledetailsReturningatuplefromamethodTuplesaren’tcollectionsANOOPEXAMPLEAfewclassesAddingbehaviortoPizzaAddingbehaviortoOrderTestingthoseclassesExperimentwitht 查看详情

14.sparkmllib之快速入门(代码片段)

简介??MLlib是Spark提供提供机器学习的库,专为在集群上并行运行的情况而设计。MLlib包含很多机器学习算法,可在Spark支持的所有编程语言中使用。??MLlib设计理念是将数据以RDD的形式表示,然后在分布式数据集上调用各种算法。... 查看详情

大数据sparkmllib基于模型的协同过滤(代码片段)

...4.1矩阵因子分解5模型的求解——损失函数1简介在大数据SparkMLlib推荐算法这篇文章中涉及到拆分,至于为什么拆分没有详解接下来写一下如何来构建模型.基于模型的协同过滤推荐,就是基于样本的用户偏好信息,训练一个... 查看详情

scala调试这个递归示例(代码片段)

defappend[T](xs:List[T],ys:List[T]):List[T]=println(xs)xsmatchcaseList()=>yscasex::xs1=>x::append(xs1,ys)append(List(1,2),List(3,4));所以println(xs)代码不会运行。我基本上想看看当xs1只是一个单元素数组时会发生什么。但是我怎么能这样做呢?我 查看详情

sparkmllib---sgd随机梯度下降算法(代码片段)

代码:packagemllibimportorg.apache.log4j.Level,Loggerimportorg.apache.spark.SparkContext,SparkConfimportscala.collection.mutable.HashMap/***随机梯度下降算法*Createdby汪本成on2016/8/5.*/objectSGD//屏蔽不必要的日志显示在 查看详情