第六章(隨機梯度下降)
阿新 • • 發佈:2018-11-30
測試資料1:
5,1 1
7,2 1
9,3 2
11,4 1
19,5 3
18,6 2
測試程式碼1:
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("c:/lpsa2.data") //獲取資料集路徑 val parsedData = data.map { line => //開始對資料集處理 val parts = line.split(',') //根據逗號進行分割槽 LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble))) }.cache() //轉化資料格式 val model = LinearRegressionWithSGD.train(parsedData, 100,0.1) //建立模型 val result = model.predict(Vectors.dense(2,1)) //通過模型預測模型 println(result) //列印預測結果 } }
結果1:
6.6399076780928095
測試資料2:
65|7,400
90|5,1300
100|4,1100
110|3,1300
60|9,300
100|5,1000
75|7,600
80|6,1200
70|6,500
50|8,30
測試程式碼2:
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("c:/lpsa.data") //獲取資料集路徑 val parsedData = data.map { line => //開始對資料集處理 val parts = line.split('|') //根據逗號進行分割槽 LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(',').map(_.toDouble))) }.cache() //轉化資料格式 //轉化資料格式 val model = LinearRegressionWithSGD.train(parsedData, 2,0.1) //建立模型 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)}.mean() //計算MSE println(MSE) } }
測試結果2:
1.1747846974449932E23