测试数据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