【发布时间】:2016-12-10 16:44:26
【问题描述】:
我用weka和python的线性回归预测了价格的数据。得到的结果和附件一样。linear-regression in weka linear-regression in python
我之前预测的数据如下:
英尺、床、浴室、车库、年龄、价格
1048,2,1,1,30,104900
1052,2,2,1,20,128750
1057,2,1,1,32,102900
1060,2,2,1,31,114900
1072,2,2,1,31,119500
1076,2,1,1,24,110500
但是当我使用 spark(1.6) mllib 分析这些数据时,我得到了不同的结果。我已经改变了 interation 和 stepsize 的值。但是结果与weka和python中的结果相差甚远。
我将数据格式化为以下类型。
104900,1048 2 1 1 30
128750,1052 2 2 1 20
102900,1057 2 1 1 32
而代码是这样的:
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.regression.LinearRegressionModel
import org.apache.spark.mllib.regression.LinearRegressionWithSGD
// Load and parse the data
val data = sc.textFile("/root/data/house.data")
val parsedData = data.map { line =>
val parts = line.split(',')
LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble)))
}.cache()
// Building the model
val numIterations = 2000
val stepSize = 0.00000001
val algorithm = new LinearRegressionWithSGD()
algorithm.setIntercept(true)
algorithm.optimizer.setNumIterations(numIterations)
algorithm.optimizer.setStepSize(stepSize)
val model = algorithm.run(parsedData)
println(model.weights)
println(model.intercept)
【问题讨论】:
-
我已尝试将数据标准化为以下格式。 (10.49,1.048 2 1 1 3) (12.875,1.052 2 2 1 2) (10.29,1.057 2 1 1 3.2) (11.49,1.06 2 2 1 3.1) (11.95,1.072 2 2 1 3.1) 而且,我试过不同的步长和迭代次数,足以获得稳定的结果。不幸的是,我得到的结果仍然与 weka 和 python 相去甚远。
标签: scikit-learn weka linear-regression apache-spark-mllib