构建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.jshj,9.kpyf,10.kprq,11.zfbz,12.date_key,13.hwmc,14.ggxh,15.dw,16.sl,17.dj,18.je je1,19.se1,20.spbm,21.label

(fpid_10000201 115717 (2239 173 2011-07-12 00:00:00.0 2016-08-31 15:40:37.0 4123.08 700.92 4824.0 201704 2017-04-25 N) 201706 可视回油单向阀 HYS-1Φ1.5A 只 3.0 35.8974358974359 107.69 18.31 1090120040000000000) 0)
(fpid_10000324 253389 (7310 173 2016-01-04 00:00:00.0 2017-07-24 10:01:02.0 36609.76 6223.64 42833.4 201709 2017-09-08 N) 201711 电视机 三星743寸 台 1.0 2991.4529914529912 2991.45 508.55 1090522010000000000) 0)
(fpid_10000416 126378 (5175 173 1999-01-14 00:00:00.0 2016-05-27 14:50:49.0 25337.81 4307.39 29645.2 201612 2016-12-21 N) 201706 防水涂料 null 公斤 105.0 5.225885225885226 548.72 93.28 1070101060000000000) 0)

package Test.tett1import org.apache.spark.ml.classification.LogisticRegression
import org.apache.spark.ml.param.ParamMap
import org.apache.spark.ml.linalg.{Vector, Vectors}
import org.apache.spark.ml.regression.LinearRegressionModel
import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.ml.regression.LinearRegression
import org.apache.spark.ml.regression.LinearRegressionobject MLDemo3 {def main(args: Array[String]): Unit = {val sess = SparkSession.builder().appName("ml").master("local[4]").getOrCreate();val sc = sess.sparkContext;val dataDir = "hdfs://weekend110:9000/user/hive/warehouse/nsr2_xfp"//定义样例类(要分析数据的类属性)case class FP(fp_nid:String,nsr_id:String,gf_id:String,hydm:String,djzclx_dm:String,kydjrq:String,xgrq:String,je:String,se:String,jshj:String,kpyf:String,kprq:String,zfbz:String,label:String)//变换()//0.fp_nid,1.nsr_id,2.gf_id,2.hydm,3.djzclx_dm,4.kydjrq,5.xgrq,6.je,7.se,8.jshj,9.kpyf,10.kprq,11.zfbz,12.date_key,13.hwmc,14.ggxh,15.dw,16.sl,17.dj,18.je je1,19.se1,20.spbm,21.labelval fpDataRDD = sc.textFile(dataDir).map(_.split("\001")).map(f => FP(f(0).toString, f(1).toString,f(2).toString,f(3).toString,f(4).toString,f(5).toString,f(6).toString, f(7).toString, f(8).toString,f(9).toString,f(10).toString,f(11).toString,f(12).toString,f(13).toString))import sess.implicits._def strToDouble(str: String): Double = {val regex = """([0-9]+)""".rval res = str match{case regex(num) => numcase _ => "1"}val resDouble = res.toDoubleresDouble}//转换RDD成DataFrame//1.fp_nid 2.nsr_id 3.gf_id 4.zfbz 5.hydm 6.djzclx_dm 7.je 8.se 9.jshj 10.kpyf 11.date_key 12.sl 13.dj 14.je1 15.se1 16.spbmval trainingDF = fpDataRDD.map(f => (f.label.replaceAll("[)]","").toDouble,Vectors.dense( if(f.zfbz.equals("N)")) 1 else 0,f.hydm.replaceAll("[(]","").toDouble,f.djzclx_dm.toDouble,f.kpyf.toDouble,strToDouble(f.je),strToDouble(f.se),strToDouble(f.jshj)))).toDF("label", "features")    //显式数据
                trainingDF.show()println("======================")//创建线性回归对象val lr = new LinearRegression()//设置最大迭代次数lr.setMaxIter(50)//通过线性回归拟合训练数据,生成模型val model = lr.fit(trainingDF)//创建内存测试数据数据框val testDF = sess.createDataFrame(Seq((0,Vectors.dense(3812,171,9401.71,1598.29,11000.0,201612,1)),(0,Vectors.dense(4190,173,72200.0,12274.0,84474.0,201710,1)),(0,Vectors.dense(7519,173,99999.99,3000.0,102999.99,201709,1)),(1,Vectors.dense(1951,173,19743.59,3356.41,23100.0,201612,1)),(1,Vectors.dense(5219,173,41880.35,7119.65,49000.0,201705,1)),(1,Vectors.dense(5189,173,1320.93,224.56,1545.49,201611,1)),    (1,Vectors.dense(1779,173,21911.4,3724.94,25636.34,201611,0)))).toDF("label", "features")testDF.show()//创建临时视图testDF.createOrReplaceTempView("test")println("======================")//利用model对测试数据进行变化,得到新数据框,查询features", "label", "prediction方面值。        val tested = model.transform(trainingDF).select("features", "label", "prediction");tested.show();//将分析的数据导入数据库                import java.sql.DriverManagertested.rdd.foreachPartition(it =>{var url = "jdbc:mysql://localhost:3306/data?useUnicode=true&characterEncoding=utf8"val conn= DriverManager.getConnection(url,"root","123456")val pstat = conn.prepareStatement ("INSERT INTO `test` (`label`, `pre`,`zfbz`,`hydm`, `djzclx_dm`, "+"`kpyf`,`je`,`se`,`jshj`) "+"VALUES (?,?,?,?,?,?,?,?,?)")for (obj <-it){pstat.setString(1,obj.get(1).toString())pstat.setString(2,obj.get(2).toString())pstat.setString(3,obj.get(0).toString().split(",")(0).replaceAll("[\\[]", ""))pstat.setString(4,obj.get(0).toString().split(",")(1))pstat.setString(5,obj.get(0).toString().split(",")(2))pstat.setString(6,obj.get(0).toString().split(",")(3))pstat.setString(7,obj.get(0).toString().split(",")(4))pstat.setString(8,obj.get(0).toString().split(",")(5))pstat.setString(9,obj.get(0).toString().split(",")(6) .replaceAll("[\\]]", ""))pstat.addBatch}try{pstat.executeBatch}finally{pstat.closeconn.close}})    }
}

maven的pom.xml配置文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>Test</groupId><artifactId>tett1</artifactId><version>0.0.1-SNAPSHOT</version><inceptionYear>2008</inceptionYear><properties><scala.version>2.7.0</scala.version></properties><repositories><repository><id>scala-tools.org</id><name>Scala-Tools Maven2 Repository</name><url>http://scala-tools.org/repo-releases</url></repository></repositories><pluginRepositories><pluginRepository><id>scala-tools.org</id><name>Scala-Tools Maven2 Repository</name><url>http://scala-tools.org/repo-releases</url></pluginRepository></pluginRepositories><dependencies><!--  <dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>${scala.version}</version></dependency> --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-mllib_2.11</artifactId><version>2.1.0</version></dependency></dependencies><build><sourceDirectory>src/main/scala</sourceDirectory><testSourceDirectory>src/test/scala</testSourceDirectory><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skip>true</skip></configuration></plugin> <plugin><groupId>org.scala-tools</groupId><artifactId>maven-scala-plugin</artifactId><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions><configuration><scalaVersion>${scala.version}</scalaVersion><args><arg>-target:jvm-1.5</arg></args></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-eclipse-plugin</artifactId><configuration><downloadSources>true</downloadSources><buildcommands><buildcommand>ch.epfl.lamp.sdt.core.scalabuilder</buildcommand></buildcommands><additionalProjectnatures><projectnature>ch.epfl.lamp.sdt.core.scalanature</projectnature></additionalProjectnatures><classpathContainers><classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer><classpathContainer>ch.epfl.lamp.sdt.launching.SCALA_CONTAINER</classpathContainer></classpathContainers></configuration></plugin></plugins></pluginManagement></build><reporting><plugins><plugin><groupId>org.scala-tools</groupId><artifactId>maven-scala-plugin</artifactId><configuration><scalaVersion>${scala.version}</scalaVersion></configuration></plugin></plugins></reporting>
</project>

转载于:https://www.cnblogs.com/Zhanghaonihao/p/9304667.html

spark 线性回归算法(scala)相关推荐

  1. spark写出分布式的训练算法_Spark0.9分布式运行MLlib的线性回归算法

    1 什么是线性回归 线性回归是另一个传统的有监督机器学习算法.在这个问题中,每个实体与一个实数值的标签 (而不是一个像在二元分类的0,1标签),和我们想要预测标签尽可能给出数值代表实体特征.MLlib ...

  2. 在Spark上用Scala实验梯度下降算法

    首先参考的是这篇文章:http://blog.csdn.net/sadfasdgaaaasdfa/article/details/45970185 但是其中的函数太老了.所以要改.另外出发点是我自己的 ...

  3. java基础巩固-宇宙第一AiYWM:为了维持生计,编程语言番外篇之机器学习(项目预测模块总结:线性回归算法、逻辑回归分类算法)~整起

    机器学习 一.机器学习常见算法(未完待续...) 1.算法一:线性回归算法:找一条完美的直线,完美拟合所有的点,使得直线与点的误差最小 2.算法二:逻辑回归分类算法 3.算法三:贝叶斯分类算法 4.算 ...

  4. SparkMLlib线性回归算法案例

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

  5. spark(day06-spark算法、Spark Sql)

    案例 处理u.data文件用户id 电影id 用户打分要求基于u.data文件,建立推荐系统模型,为789号用户推荐10部电影建模时,k的取值10~50之间,迭代次数:5~20次之间 λ:0.01~0 ...

  6. 【机器学习入门】(8) 线性回归算法:正则化、岭回归、实例应用(房价预测)附python完整代码和数据集

    各位同学好,今天我和大家分享一下python机器学习中线性回归算法的实例应用,并介绍正则化.岭回归方法.在上一篇文章中我介绍了线性回归算法的原理及推导过程:[机器学习](7) 线性回归算法:原理.公式 ...

  7. 【机器学习入门】(7) 线性回归算法:原理、公式推导、损失函数、似然函数、梯度下降

    各位同学好,今天我和大家分享一下python机器学习中的线性回归算法.内容有: (1) 线性回归方程.(2) 损失函数推导.(3) 似然函数.(4) 三种梯度下降方法 1. 概念简述 线性回归是通过一 ...

  8. 回归模型-线性回归算法

    线性回归算法 问题分为有监督问题和无监督问题两类 当用到标签来划分的时候就是有监督问题,当没有用标签值的时候就是无监督问题. 线性回归求解的结果是值 比如: 根据工资和年龄来预测出一个具体的值,根据工 ...

  9. 第5章 线性回归算法

    1.解决回归问题 2.思想简单,实现容易 3.许多强大的非线性模型的基础 4.结果具有很好的可解释性 5.蕴含机器学习中的很多重要思想 所谓的建模的过程,其实就是找到一个模型最大程度的拟合我们的数据. ...

最新文章

  1. mysql5.7单机多实例_Mysql 5.7.21单机多实例安装
  2. muduo之EventLoopThreadPool
  3. 第九课:循环链表与双向链表
  4. php把400个数组建二维,请教怎么将多维数组转换为二维数组
  5. SpringCloud 配置安全验证、服务消费端处理、无状态 Session 配置、定义公共安全配置程序类
  6. 流体式布局与响应式布局_将固定像素设计转换为流体比例布局
  7. python程序中想使用正则表达式_python中正则表达式的使用方法
  8. c++ 获取操作的精确时间
  9. 《极客学院 --NSAttributedString 使用详解-4-UITextKit 简介》学习笔记(待处理)...
  10. 根号x_【深情攻X自卑受】糖与盐by根号三
  11. 全向轮机器人直线运动分析
  12. ios 安装OpenFire
  13. vue项目中使用axios发送请求
  14. jenkins教程菜鸟_Jenkins插件编译
  15. 《大数据基础教程、实验和案例教程---林子雨版》分布式模式的HBase配置
  16. QT项目:linux资源监视器
  17. 王家林Spark视频
  18. 买卖股票系列(力扣121、122、123、188、309、714) Java动态规划
  19. MindMaster思维导图创建流程图
  20. 模板方法模式---榨汁机

热门文章

  1. HT32F52352 PWM控制舵机
  2. C++ 贪心算法带期限和效益的作业排序的一个更快算法FJS
  3. Android 根据屏幕大小设置字体
  4. 电脑录屏用什么软件?推荐这3款软件,用过都说好
  5. 一个菜鸟程序员的Linux学习经历+实习+工作(生涯经历直播,会持续更新)(个人经历原创)
  6. 计算机怎么操作文档,iPhone如何操作电脑文件 文件共享功能了解一下
  7. 湖北移动魔百盒CM201-1-YS_S905L2_RTL8822_emmc_双内存-当贝桌面线刷固件包
  8. 误删生产数据库,顺丰高级工程师被开除!
  9. 怎么制作纯html,教你一招纯HTML制作个人简历
  10. sha512是什么意思,sha512安全吗?