在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。(这反过来又应当由多个相关的因变量预测的多元线性回归区别,而不是一个单一的标量变量。)

在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计。这些模型被叫做线性模型。最常用的线性回归建模是给定X值的y的条件均值是X的仿射函数。不太一般的情况,线性回归模型可以是一个中位数或一些其他的给定X的条件下y的条件分布的分位数作为X的线性函数表示。像所有形式的回归分析一样,线性回归也把焦点放在给定X值的y的条件概率分布,而不是X和y的联合概率分布(多元分析领域)。

线性回归是回归分析中第一种经过严格研究并在实际应用中广泛使用的类型。这是因为线性依赖于其未知参数的模型比非线性依赖于其位置参数的模型更容易拟合,而且产生的估计的统计特性也更容易确定。

线性回归模型经常用最小二乘逼近来拟合,但他们也可能用别的方法来拟合,比如用最小化“拟合缺陷”在一些其他规范里(比如最小绝对误差回归),或者在桥回归中最小化最小二乘损失函数的惩罚.相反,最小二乘逼近可以用来拟合那些非线性的模型.因此,尽管“最小二乘法”和“线性模型”是紧密相连的,但他们是不能划等号的。

数据源准备:

position;square;price;direction;type;name;
0;190;20000;0;4室2厅2卫;中信城(别墅);
0;190;20000;0;4室2厅2卫;中信城(别墅);
5;400;15000;0;4室3厅3卫;融创上城;
0;500;15000;0;5室3厅2卫;中海莱茵东郡;
5;500;15000;0;5室3厅4卫;融创上城(别墅);
1;320;15000;1;1室1厅1卫;长江花园;
0;143;12000;0;3室2厅2卫;融创上城;
0;200;10000;0;4室3厅2卫;中海莱茵东郡(别墅);
0;207;9000;0;4室3厅4卫;中海莱茵东郡;
0;130;8500;0;3室2厅2卫;伟峰东第;
5;150;7000;0;3室2厅2卫;融创上城;
2;178;6000;0;4室2厅2卫;鸿城国际花园;
5;190;6000;0;3室2厅2卫;亚泰豪苑C栋;
1;150;6000;0;5室1厅2卫;通安新居A区;
2;165;6000;0;3室2厅2卫;万科惠斯勒小镇;
0;64;5500;0;1室1厅1卫;保利中央公园;
2;105;5500;0;2室2厅1卫;虹馆;
1;160;5300;0;3室2厅1卫;昊源高格蓝湾;
2;170;5100;0;4室2厅2卫;亚泰鼎盛国际;
0;155;5000;0;3室2厅2卫;中海水岸馨都;
5;128;5000;0;4室2厅1卫;长影世纪村;
0;145;4500;0;3室2厅2卫;富奥临河湾;
2;92;4200;0;3室2厅1卫;御翠豪庭尚府一期;
0;75;4100;0;1室1厅1卫;恒大雅苑;
5;105;4000;0;2室1厅1卫;南湖名家;
2;93;4000;0;3室2厅1卫;御翠豪庭尚府一期;
5;121;4000;0;3室1厅1卫;万达广场;
0;104;4000;0;2室1厅1卫;棠棣;
1;135;4000;0;3室2厅2卫;万科蓝山;
5;98;4000;0;2室2厅1卫;华亿红府;
0;128;3800;0;3室2厅1卫;复地哥德堡森林;
2;154;3700;0;3室2厅2卫;长春明珠;
0;100;3700;0;2室2厅1卫;翡翠花溪;
4;66;3700;0;1室1厅1卫;长客厂南;
2;106;3600;0;2室2厅1卫;虹馆;
5;132;3500;0;3室2厅1卫;大禹城邦;
1;135;3500;0;3室2厅1卫;昊源高格蓝湾;
0;130;3500;0;3室2厅1卫;中海国际社区(AJ区);
2;70;3500;0;2室1厅1卫;中信御园;
0;145;3500;0;3室2厅2卫;万盛东城;
5;132;3500;0;3室2厅2卫;大禹城邦;
5;100;3300;0;2室2厅1卫;国信南湖公馆;
5;75;3200;0;1室1厅1卫;南湖祥水湾;
0;120;3200;0;3室3厅2卫;复地哥德堡森林;
2;95;3200;0;3室2厅1卫;万科金域长春;
0;106;3200;0;2室2厅1卫;富腾天下城;
5;118;3200;0;3室2厅2卫;融创上城(别墅);
1;130;3200;0;3室2厅1卫;万龙名城;
0;137;3200;0;3室2厅2卫;中海国际社区(AJ区);

Demo:


import org.apache.spark.SparkConf
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.regression.LinearRegression
import org.apache.spark.sql.SparkSession/*** 线性回归*/
object linner {def main(args: Array[String]): Unit = {val conf = new SparkConf().setMaster("local[*]").setAppName("linner")val spark = SparkSession.builder().config(conf).getOrCreate()val file = spark.read.format("csv").option("sep", ";").option("header", "true").load("house.csv")import spark.implicits._//生成随机数val random = new util.Random()val data = file.select("square", "price").map(rows => (rows.getAs[String](0).toDouble, rows.getString(1).toDouble, random.nextDouble())).toDF("square", "price", "random").sort("random")//类似封装成 数组val assembler = new VectorAssembler().setInputCols(Array("square")).setOutputCol("features")val frame = assembler.transform(data)//把数据集拆分2个部分val Array(train, test) = frame.randomSplit(Array(0.8, 0.2), 1L)//创建线性回归的示例val regression = new LinearRegression().setMaxIter(10) //训练轮次.setRegParam(0.3) //正则化.setElasticNetParam(0.8) //推荐值//Features 特征向量     label 标签val model = regression.setLabelCol("price").setFeaturesCol("features").fit(train)model.transform(test).count()model.transform(test).show(50, truncate = true)/*** fit   做训练* transform   做预测*/spark.stop()}
}

Sparkmllib scala线性回归相关推荐

  1. scala 线性回归_Scala的特征线性化

    scala 线性回归 Scala | 特性线性化 (Scala | Trait Linearization) In Scala programming language, trait lineariz ...

  2. Sparkmllib scala逻辑回归

    logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域.例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等.以胃癌病 ...

  3. sparkmllib scala GBDT Demo

    定义 GBDT(Gradient Boosting Decision Tree)是一种迭代的决策树算法,由多棵决策树组成,所有树的结论累加起来作为最终答案.GBDT是boosting算法的一种,按照b ...

  4. sparkmllib scala NaiveBayes Demo

    定义  贝叶斯方法 贝叶斯方法是以贝叶斯原理为基础,使用概率统计的知识对样本数据集进行分类.由于其有着坚实的数学基础,贝叶斯分类算法的误判率是很低的.贝叶斯方法的特点是结合先验概率和后验概率,即避免了 ...

  5. Sparkmllib scala KMEANS demo

    定义:  聚类是一个将数据集中在某些方面相似的数据成员进行分类组织的过程,聚类就是一种发现这种内在结构的技术,聚类技术经常被称为无监督学习. k均值聚类是最著名的划分聚类算法,由于简洁和效率使得他成为 ...

  6. Sparkmllib scala svm demo

    简介: 支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized l ...

  7. SparkMLlib线性回归算法案例

    SparkMLlib线性回归算法案例 一.SparkMLlib线性回归模型 二.案例实现 一.SparkMLlib线性回归模型 MLlib的线性回归模型采用随机梯度下降算法来优化目标函数.MLlib实 ...

  8. spark 线性回归算法(scala)

    构建Maven项目,托管jar包 数据格式 //0.fp_nid,1.nsr_id,2.gf_id,2.hydm,3.djzclx_dm,4.kydjrq,5.xgrq,6.je,7.se,8.jsh ...

  9. Spark机器学习9· 实时机器学习(scala with sbt)

    Spark机器学习 1 在线学习 模型随着接收的新消息,不断更新自己:而不是像离线训练一次次重新训练. 2 Spark Streaming 离散化流(DStream) 输入源:Akka actors. ...

最新文章

  1. 梯度优化算法Adam
  2. j2me学习三_LCDui类学习(2)
  3. Anbox 和 LXC 代码规模
  4. 温故而知新!微信小程序的事件处理,吊打面试官系列!
  5. 没钱买KEGG怎么办?REACTOME开源通路更强大
  6. UE3 移动设备主页
  7. drools 7.x 决策表转drl
  8. 《Unix网络编程(第3版)》代码编译的一些问题
  9. python摄像头跟随人脸_opencv-python 学习笔记2:实现目光跟随(又叫人脸跟随)
  10. qdialog 只有点击才能获得焦点_张怡筠:怎么做,孩子才能真正爱上学习?
  11. informatica如何设置失败告警_智能运维中的关键一步——告警管理
  12. Xcode6 viewDidLoad 中View的subviews 为空
  13. 简易java电子词典_使用Android简单实现有道电子词典
  14. FTP - YUM 源配置
  15. 【毕业设计】基于单片机的心率血氧健康监测手表 - 物联网 嵌入式
  16. html适合app的登陆页面,纯CSS3创意手机APP登录界面动画特效
  17. 初学者怎么学习网页设计
  18. 更改jupyter lab默认启动路径(亲测有效)
  19. 《cypher》游戏第一章攻略
  20. 2022哈工大软件构造我的学习笔记(1)

热门文章

  1. 通过扩展改善ASP.NET MVC的验证机制[实现篇]
  2. Android中添加背景音乐的两种方法
  3. 深入解析C++编程中的静态成员函数
  4. 【编程】为什么不能直接对链表头head进行操作?
  5. MatConvnet工具箱文档翻译理解(2)
  6. Nhibernate中session的状态与session.connection.state状态的差别的解释
  7. IE、FF的基本注意事项
  8. 转: ashx中使用Session
  9. 信号的高级特性-核心转储文件
  10. Makefile使用规则