SparkMLlib线性回归算法案例

  • 一、SparkMLlib线性回归模型
  • 二、案例实现

一、SparkMLlib线性回归模型


MLlib的线性回归模型采用随机梯度下降算法来优化目标函数。MLlib实现了分布式的随机梯度下降算法,其分布方法是:在每次迭代中,随机抽取一定比例的样本作为当前迭代的计算样本;对计算样本中的每一个样本分别计算梯度(分布式计算每个样本的梯度);然后再通过聚合函数对样本的梯度进行累加,得到该样本的平均梯度及损失;最后根据最新的梯度及上次迭代的权重进行权重的更新。

MLlib线性回归模型方程:

线性回归模型的损失函数是:

二、案例实现


  1. 数据格式说明:

  2. 测试数据所在位置:测试数据集

  3. 具体实现代码如下:

    package com.spark.mlimport org.apache.log4j.{Level, Logger}
    import org.apache.spark.mllib.linalg.Vectors
    import org.apache.spark.mllib.regression.{LabeledPoint, LinearRegressionModel, LinearRegressionWithSGD}
    import org.apache.spark.rdd.RDD
    import org.apache.spark.{SparkConf, SparkContext}object LinearRegression {def main(args: Array[String]) {// 构建Spark对象val conf = new SparkConf().setAppName("LinearRegressionWithSGD").setMaster("local[*]")val sc = new SparkContext(conf)Logger.getRootLogger.setLevel(Level.WARN)//读取样本数据val data_path1 = "testdatas/lpsa.data"val data = sc.textFile(data_path1)val examples = data.map { line =>val parts = line.split(',')LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble)))}.cache()// 触发Job实现缓存val numExamples = examples.count()// 新建线性回归模型,并设置训练参数val numIterations = 200val stepSize = 1val miniBatchFraction = 0.5val model = LinearRegressionWithSGD.train(examples, numIterations, stepSize, miniBatchFraction)val weights = model.weights // 权重val intercept = model.intercept // 偏置println("权重:" + weights.toArray + "-,偏置:" + intercept)// 对样本进行测试predictByModel(model,examples,numExamples)// 模型保存val ModelPath = "testdatas/model/LinearRegressionModel"model.save(sc, ModelPath)}def predictByModel(model: LinearRegressionModel,examples:RDD[LabeledPoint],numExamples:Long): Unit ={// 对样本进行测试val prediction = model.predict(examples.map(_.features))val predictionAndLabel = prediction.zip(examples.map(_.label))val print_predict = predictionAndLabel.take(20)println("prediction" + "\t" + "label")for (i <- 0 to print_predict.length - 1) {println(print_predict(i)._1 + "\t" + print_predict(i)._2)}// 计算测试误差val loss = predictionAndLabel.map {case (p, l) =>val err = p - lerr * err}.reduce(_ + _)val rmse = math.sqrt(loss / numExamples)println(s"Test RMSE = $rmse.")}
    }

    注意:可不断调整模型参数以便于得到最优的模型

SparkMLlib线性回归算法案例相关推荐

  1. 线性回归算法(Linear Regression)及相关案例

    线性回归算法的原理和代码实现 大家好,我是W 这次讲线性回归,之前有说逻辑回归(Logistic Regression),虽然逻辑回归负责分类,可是在数据到达二值函数之前的逻辑都是线性回归的逻辑,所以 ...

  2. 线性回归之案例:波士顿房价预测

    线性回归之案例:波士顿房价预测 数据介绍   [13个特征值,1个目标值] 给定的这些特征,是专家们得出的影响房价的结果属性.此阶段不需要自己去探究特征是否有用,只需要使用这些特征.到后面量化很多特征 ...

  3. python 预测算法_通过机器学习的线性回归算法预测股票走势(用Python实现)

    本文转自博客园,作者为hsm_computer 原文链接:https://www.cnblogs.com/JavaArchitect/p/11717998.html在笔者的新书里,将通过股票案例讲述P ...

  4. 线性回归算法数学原理_线性回归算法-非数学家的高级数学

    线性回归算法数学原理 内部AI (Inside AI) Linear regression is one of the most popular algorithms used in differen ...

  5. 【机器学习】线性回归实战案例一:多元素情况下广告投放效果分析步骤详解

    线性回归实战案例一:多元素情况下广告投放效果分析步骤详解 2 线性回归 2.1 案例一:多元素情况下广告投放效果分析 2.1.1 模块加载与绘图布局样式设置 2.1.2 加载数据和数据筛选 2.1.3 ...

  6. 机器学习(二)多元线性回归算法预测房价

    机器学习(二)多元线性回归算法预测房价 本篇文章已作为重庆交通大学19级微课<机器视觉>大作业提交,提前声明,避免抄袭误会 "garbage in garbage out&quo ...

  7. 通过机器学习的线性回归算法预测股票走势(用Python实现)

    在本人的新书里,将通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得.这里给出以线性回归算法预测股票的案例,以此讲述通过Python的sklearn ...

  8. 史上最易懂——一文详解线性回归算法的纯Python实现

    本文作者:黄佳,极客时间专栏<零基础实战机器学习>作者,新加坡埃森哲公司高级顾问,人工智能专家,机器学习和云计算高级工程师,参与过公共事业.医疗.金融等多领域大型项目.著有<零基础学 ...

  9. 详解线性回归算法的纯Python实现

    ↑↑↑关注后"星标"简说Python人人都可以简单入门Python.爬虫.数据分析 简说Python推荐 来源|天池大数据科研平台作者|黄佳 零基础学机器学习--一文详解线性回归算 ...

最新文章

  1. usaco前两章小结
  2. MPB:地大郭东毅等-一种针对重金属污染土壤的高效DNA提取方法
  3. 从零开始_学_数据结构(六)——排序(冒泡、插入、希尔、简单选择、归并、快速)...
  4. 【leetcode】974. Subarray Sums Divisible by K
  5. Lammps 问题集锦
  6. Flume向HDFS写数据实例
  7. 最长公共前缀(java实现)
  8. idea test包_6.Flinkx如何在idea中运行?
  9. hpux oracle9,oracle 9i,10G,11G,各版本下载资源
  10. kernel启动过程总结的思维导图
  11. Android之WebView学习
  12. Java实现文件复制
  13. LCA--最近公共祖先
  14. Oracle swap 100%案例分析
  15. 深圳小库科技招聘高级前端
  16. slk文件转换器安卓版_手机MP3提取转换器下载|MP3提取转换器app安卓版V1.3.7 下载_当游网...
  17. Docker 图片水印中文乱码显示为方框, 设置Docker容器字体
  18. c语言文字转语音代码,C语言实现将文字转为语音
  19. 移动硬盘如何分区?分区软件推荐:
  20. 下列不是用于制作计算机动画,计算机应用基础动画制作软件_2019答案章节答案期末答案...

热门文章

  1. FTP服务器配置以及问题的解决
  2. 使用java iTest实现PDF大文件压缩——将文件过大的图片PDF文件压缩成小一些的图片PDF文件
  3. MFC Menu修改名称
  4. Google Colab 使用云端硬盘DRIVE的数据集
  5. Python+uiautomator2实现自动刷抖音视频
  6. IDEA第一次创建android太慢,idea新建maven项目时速度缓慢的解决方法
  7. Kubenetes学习笔记之Pod(下)
  8. android开发-仿乐桌面四叶草
  9. php联机代码,噬血代码无法联机解决办法
  10. matlab 减震,基于MATLAB的汽车减震系统仿真建模