import org.apache.log4j.{Level, Logger}
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.regression.LinearRegression
import org.apache.spark.sql.SparkSession /**
* 线性回归
* Created by zhen on 2018/11/12.
*/
object LinearRegression {
Logger.getLogger("org").setLevel(Level.WARN) // 设置日志级别
def main(args: Array[String]) {
val spark = SparkSession
.builder()
.appName("LinearRegression")
.master("local[2]")
.getOrCreate()
val train_data = spark.sparkContext.textFile("E:/BDS/newsparkml/src/train.txt") // 加载数据
val train_map_data = train_data.map{ row =>
val split = row.split(",")
(split(0).toDouble,split(1).toDouble,split(2).toDouble,split(3).toDouble,
split(4).toDouble,split(5).toDouble,split(6).toDouble,split(7).toDouble)
}
val df = spark.sqlContext.createDataFrame(train_map_data)
val colArray = Array("Population","Income","Illiteracy","LifeExp","HSGrad","Frost","Area")
val train_df = df.toDF(colArray(0),colArray(1),colArray(2),colArray(3),"Murder",colArray(4),colArray(5),colArray(6))
val assembler = new VectorAssembler()
.setInputCols(colArray)
.setOutputCol("features")
val vectDF = assembler.transform(train_df)
val weights = Array(0.8,0.2) //设置训练集和测试集的比例
val split_data = vectDF.randomSplit(weights) // 拆分训练集和测试集
// 创建模型对象
val linearRegression = new LinearRegression()
.setFeaturesCol("features")
.setLabelCol("Murder")
.setFitIntercept(true)
.setMaxIter(10)
.setRegParam(0.3)// 正则化
.setElasticNetParam(0.8)
// 训练模型
val lrModel = linearRegression.fit(split_data(0))
// 查看模型参数
//lrModel.extractParamMap()
println(s"Cofficients:${lrModel.coefficients} Intercept:${lrModel.intercept}")
//模型评估
val trainingSummary = lrModel.summary
println(s"objectiveHistoryList:${trainingSummary.objectiveHistory.toList}")
println(s"r2:${trainingSummary.r2}")
// 预测
val predictions = lrModel.transform(split_data(1))
val predict_result = predictions.selectExpr("features","Murder","round(prediction,1) as prediction") // 保存一位小数
println("训练集数据------------------------------真实值--预测值")
predict_result.foreach(println(_))
}
}

结果:

Spark线性回归实现优化的更多相关文章

  1. Spark读Hbase优化 --手动划分region提高并行数

    一. Hbase的region 我们先简单介绍下Hbase的架构和Hbase的region: 从物理集群的角度看,Hbase集群中,由一个Hmaster管理多个HRegionServer,其中每个HR ...

  2. [转] - Spark排错与优化

    Spark排错与优化 http://blog.csdn.net/lsshlsw/article/details/49155087 一. 运维 1. Master挂掉,standby重启也失效 Mast ...

  3. SparkSQL的一些用法建议和Spark的性能优化

    1.写在前面 Spark是专为大规模数据处理而设计的快速通用的计算引擎,在计算能力上优于MapReduce,被誉为第二代大数据计算框架引擎.Spark采用的是内存计算方式.Spark的四大核心是Spa ...

  4. spark 集群优化

    只有满怀自信的人,能在任何地方都怀有自信,沉浸在生活中,并认识自己的意志. 前言 最近公司有一个生产的小集群,专门用于运行spark作业.但是偶尔会因为nn或dn压力过大而导致作业checkpoint ...

  5. Spark排错与优化

    一. 运维 1. Master挂掉,standby重启也失效 Master默认使用512M内存,当集群中运行的任务特别多时,就会挂掉,原因是master会读取每个task的event log日志去生成 ...

  6. spark新能优化之序列化

    概叙: 在任何分布式系统中,序列化都是扮演着一个重要的角色的.如果使用的序列化技术,在执行序列化操作的时候很慢,或者是序列化后的数据还是很大,那么会让分布式应用程序的性能下降很多.所以,进行Spark ...

  7. [看图说话] 基于Spark UI性能优化与调试——初级篇

    Spark有几种部署的模式,单机版.集群版等等,平时单机版在数据量不大的时候可以跟传统的java程序一样进行断电调试.但是在集群上调试就比较麻烦了...远程断点不太方便,只能通过Log的形式,进行分析 ...

  8. [Spark] - SparkCore程序优化总结

    http://spark.apache.org/docs/1.6.1/tuning.html1) 代码优化 a. 对于多次使用的RDD,进行数据持久化操作(eg: cache.persist) b. ...

  9. 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 ...

随机推荐

  1. hdu 5116--Everlasting L(计数DP)

    题目链接 Problem Description Matt loves letter L. A point set P is (a, b)-L if and only if there exists ...

  2. Jenkins配置AD域认证

    Jenkins配置AD域认证 #检测域控地址ping youad.com指向的IP #如果不是实际域控ip地址,则修改hosts vi /etc/hosts #192.168.100.100替换为实际 ...

  3. Re:从零开始的MySQL入门学习

    Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器.由于这四个软件都是免费或开放式源码软件,因此使用这种不用花一分钱(人工成本除外)就可以建立起一 ...

  4. C语言第十一讲,预处理命令.

    C语言第十一讲,预处理命令. 一丶预处理简介 什么是预处理,预处理就是预先处理. 我们知道,程序会经过编译,连接形成可执行文件 这些在编译之前对源文件进行简单加工的过程,就称为预处理(即预先处理.提前 ...

  5. lightswitch 添加 TreeView 控件

    代码片段 <UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk&q ...

  6. 【图文详细教程】maven3安装配置+eclipse离线安装maven3插件《《唯一成功的教程~~~2018-01-09》》

    环境搭建前提: 1.电脑上已经安装了1.7以及以上版本的JDK(因为我提供的maven版本是最新的3.3.9的,要求最低JDK1.7) 2.配置好了ecplise并且能正常启动 第一步:下载maven ...

  7. 模拟HTTP协议接收请求并返回信息

    private string HttpPost(string Url, string postDataStr) { HttpWebRequest request = (HttpWebRequest)W ...

  8. [转]Angular4---部署---将Angular项目部署到IIS上

    本文转自:https://www.cnblogs.com/kingkangstudy/p/7699710.html Angular项目部署到一个IIS服务器上 1.安装URL rewrite组件: 网 ...

  9. [PHP] 数据结构-二叉树的创建PHP实现

    1.利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFu ...

  10. Java基础——Ajax(三)

    Ajax 中文乱码问题(分两种情况) 1.对于Ajax  发的 post请求,服务端只需要 : request.setCharacterEncoding("utf-8"); 2.对 ...