使用spark mllib实现lineaRegression的Demo

2 篇文章 0 订阅
2 篇文章 0 订阅
package mlib.demo.linearegression
import org.apache.log4j.{Level, Logger}
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.{LinearRegressionWithSGD, LabeledPoint}
import org.apache.spark.{SparkContext, SparkConf}


/**
 * Created by master on 3/1/18.
 */
object LineaRegression {
  def main(args: Array[String]) {
    //shiled not necessary info on the terminal
    Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)


    //set run environment
    val conf = new SparkConf().setAppName("LineaRegression").setMaster("local")
    val sc = new SparkContext(conf)


    // load data and parse
    /*
1 -0.4307829,-1.63735562648104 -2.00621178480549 -1.86242597251066 -1.02470580167082 -0.522940888712441 -0.86317118542594    5 -1.04215728919298 -0.864466507337306
2 -0.1625189,-1.98898046126935 -0.722008756122123 -0.787896192088153 -1.02470580167082 -0.522940888712441 -0.863171185425    945 -1.04215728919298 -0.864466507337306
*/


    val data = sc.textFile("/opt/data/data4linearegression")
    val parsedData = data.map { line =>
      var parts = line.split(",")


      // character into dense vector
      LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble)))
    }


    //construct model
    val numIeterations = 100
    //参数估计最大似然用的比较多,这里采用随机梯度下降法随机梯度下降法(Stochastic Gradient Descent,SGD,
    //也作增量梯度下降法:Incremental Gradient Method, IGM)
    //sgd解决了梯度下降的两个问题: 收敛速度慢和陷入局部最优


    val model = LinearRegressionWithSGD.train(parsedData, numIeterations)
    //judge model and compute errors
    val valuesAndPreds = parsedData.map {
      point =>
        val prediction = model.predict(point.features)
        (point.label, prediction)
    }
    val MSE = valuesAndPreds.map { case (v, p) => math.pow((v - p), 2) }.reduce(_ + _) / valuesAndPreds.count()


    println("trainning Mean Squared Error = " + MSE)
    println(model.weights + "-------------------")
    sc.stop()
  }


}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值