spark mllib 預測之LinearRegression(線性迴歸)

商品價格與消費者輸入之間的關係

商品需求(y, 噸),價格(x1, 元),消費者收入(x2, 元)apache

y x1 x2
5 1 1
8 1 2
7 2 1
13 2 3
18 3 4

創建需求函數: y = ax1+bx2函數

運行代碼以下

package spark.regressionAnalysis

/**
  * 線性迴歸, 創建商品價格與消費者輸入之間的關係,
  * 預測價格
  */

import org.apache.log4j.{Level, Logger}
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.{LabeledPoint, LinearRegressionWithSGD}
import org.apache.spark.{SparkConf, SparkContext}

object LinearRegression {
  val conf = new SparkConf()     //建立環境變量
    .setMaster("local")        //設置本地化處理
    .setAppName("LinearRegression")//設定名稱
  val sc = new SparkContext(conf)  //建立環境變量實例

  def main(args: Array[String]) {
    val data = sc.textFile("./src/main/spark/regressionAnalysis/lr.txt")//獲取數據集路徑
    val parsedData = data.map { line =>	 //開始對數據集處理
        val parts = line.split('|') //根據逗號進行分區
        LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(',').map(_.toDouble)))
      }.cache() //轉化數據格式

    //LabeledPoint, numIterations, stepSize
    val model = LinearRegressionWithSGD.train(parsedData, 2, 0.1) //創建模型

    val result = model.predict(Vectors.dense(1, 3))//經過模型預測模型
    println(model.weights)
    println(model.weights.size)
    println(result)	//打印預測結果
  }
}

lr.txtspa

5|1,1
8|1,2
7|2,1
13|2,3
18|3,4

結果如圖

相關文章
相關標籤/搜索