測試數據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