保序回归即给定了一个无序的数字序列,通过修改其中元素的值,得到一个非递减的数字序列,要求是使得误差(预测值和实际值差的平方)最小。比如在动物身上实验某种药物,使用了不同的剂量,按理说剂量越大,有效的比例就应该越高,但是如果发现了剂量大反而有效率降低了,这个时候就只有把无序的两个元素合并了,重新计算有效率,直到计算出来的有效率不大于比下一个元素的有效率。

MLlib使用的是PAVA(Pool Adjacent Violators Algorithm)算法,并且是分布式的PAVA算法。首先在每个分区的样本集序列运行PAVA算法,保证局部有序,然后再对整个样本集运行PAVA算法,保证全局有序。

代码:

import org.apache.log4j.{Level, Logger}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.mllib.regression.{IsotonicRegression, IsotonicRegressionModel, LabeledPoint}object IsotonicRegression {def main(args: Array[String]) {// 设置运行环境val conf = new SparkConf().setAppName("Istonic Regression Test").setMaster("spark://master:7077").setJars(Seq("E:\\Intellij\\Projects\\MachineLearning\\MachineLearning.jar"))val sc = new SparkContext(conf)Logger.getRootLogger.setLevel(Level.WARN)// 读取样本数据并解析val dataRDD = sc.textFile("hdfs://master:9000/ml/data/sample_isotonic_regression_data.txt")val parsedDataRDD = dataRDD.map { line =>val parts = line.split(',').map(_.toDouble)(parts(0), parts(1), 1.0)}// 样本数据划分,训练样本占0.7,测试样本占0.3val dataParts = parsedDataRDD.randomSplit(Array(0.7, 0.3), seed = 25L)val trainRDD = dataParts(0)val testRDD = dataParts(1)// 建立保序回归模型并训练val model = new IsotonicRegression().setIsotonic(true).run(trainRDD)
// 计算误差val prediction = testRDD.map { line =>val predicted = model.predict(line._2)(predicted, line._2, line._1)}val showPrediction = prediction.collectprintlnprintln("Prediction" + "\t" + "Feature")for (i <- 0 to showPrediction.length - 1) {println(showPrediction(i)._1 + "\t" + showPrediction(i)._2)}val MSE = prediction.map { case (p, _, l1) => math.pow((p - l1), 2) }.mean()println("MSE = " + MSE)}
}

运行结果:

转载于:https://www.cnblogs.com/mstk/p/7019449.html

Spark机器学习(3):保序回归算法相关推荐

  1. 基于Isotonic回归(保序回归算法)的鸢尾花数据集回归问题

    基于Isotonic回归的鸢尾花数据集回归问题 1. 作者介绍 2.保序回归算法 2.1 算法原理 2.2 保序回归算法举例 3. 鸢尾花数据集介绍 3.1 数据集获取 4.代码实现 4.1 导入需要 ...

  2. 保序回归(isotonic regression)

    保序回归算法原理及Spark MLlib调用实例(Scala/Java/python) 保序回归 保序回归isotonic regression

  3. 【Spark机器学习速成宝典】模型篇08保序回归【Isotonic Regression】(Python版)

    目录 保序回归原理 保序回归代码(Spark Python) 保序回归原理 待续... 返回目录 保序回归代码(Spark Python) 代码里数据:https://pan.baidu.com/s/ ...

  4. Spark中组件Mllib的学习41之保序回归(Isotonic regression)

    更多代码请见:https://github.com/xubo245/SparkLearning Spark中组件Mllib的学习之分类篇 1解释 问题描述:给定一个无序数字序列,要求不改变每个元素的位 ...

  5. Python 第三方模块 机器学习 Scikit-Learn模块 有监督学习1 交叉分解,高斯过程,保序回归

    一.cross_decomposition 1.简介: 该模块用于进行"交叉分解"(cross decomposition) 2.使用: "典型相关分析"(Ca ...

  6. 机器学习基础 维基翻译 保序回归 随机森林 Pipeline处理 及简单的sklearn例子

    Isotonic regression(保序回归) In numerical analysis, isotonic regression (IR) involves finding a weighte ...

  7. 1.15. Isotonic regression(保序回归)

    1.15. Isotonic regression(保序回归) 一.描述 保序回归,正如它的名字,是一种对预测值施加了"保序"约束的一种回归分析."保序"的严格 ...

  8. 多项式回归、分位数回归(Quantile Regression)、保序回归(Isotonic Regression)、RANSAC回归、核岭回归、基准回归模型(baseline)

    多项式回归.分位数回归(Quantile Regression).保序回归(Isotonic Regression).RANSAC回归.核岭回归.基准回归模型(baseline) 目录

  9. sklearn自学指南(part32)--保序回归

    学习笔记,仅供参考,有错必纠 文章目录 保序回归 保序回归 IsotonicRegression类对一维数据进行非递减实函数拟合.它解决了以下问题: $$ minimize ; \sum_i w_i ...

最新文章

  1. 人人都会Vue,你的优势在哪里?
  2. iOS程序启动过程笔记
  3. 彻底理解H5的DOM事件
  4. android 获取屏幕的宽高
  5. table tr th td
  6. python目标检测答案_入门指南:用Python实现实时目标检测(内附代码)
  7. a = a + 1, a++, ++a ,a+=1区别在哪
  8. 暴涨2000+? 2021年软件测试平均薪资出来了,我坐不住了
  9. mybatis基础_动态代理开发
  10. 常用网络特殊符号大全(含彩色表情符号)
  11. 【MATLAB生信分析】MATLAB生物信息分析工具箱(一)
  12. 小鹤双拼学习指引-by小鹤双拼作者-散步的鹤
  13. 实验: 配置trunk
  14. linux 关闭 飞行模式,飞行模式和免打扰模式的区别
  15. CAD制图快捷键分享,制图之前的基本准备
  16. js之好看的鼠标点击-光标特效
  17. Ubuntu下查看隐藏文件
  18. 【数学之美】分形图形动画演示欣赏
  19. 萌新卷妹带你逃出算法无名岛第六站
  20. 快速完成批量图片压缩,你需要这款图片压缩神器!

热门文章

  1. Spring+Hiberate 多数据源的网文整理
  2. 手写及场景文字分析与识别的一些新尝试
  3. 强化学习能挑战众多世界冠军,人类亦能利用强化学习成为冠军
  4. 如何突破科研瓶颈?如何与导师自在相处?微软研究员们的读博心得
  5. 基于YOLOv3 与CRNN的中文自然场景文字检测与识别
  6. 小白如何学3D建模?从零开始变大神,学习记录手册(必备)
  7. 锻炼编程能力的10个游戏:通关既巅峰!
  8. freemarker导出word 目录_PPT转Word你还用复制粘贴?别笑掉大牙了,这几招教你快速转换...
  9. 【OpenCV】OpenCV函数精讲之 -- 初级图像混合
  10. 全国各高校开学时间汇总!