Начиная с примера, я пытался сделать LinearRegression. Проблема в том, что я получил неправильный результат. В качестве перехватчика я должен иметь: 2.2.Spark mllib LinearRegression weird result
Я попытался добавить .optimizer.setStepSize (0.1), найденный в другом сообщении, но все же получить странный результат. Предложение?
Это набор данных
1,2
2,4
3,5
4,4
5,5
Код:
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.regression.LinearRegressionModel
import org.apache.spark.mllib.regression.LinearRegressionWithSGD
import org.apache.spark.mllib.linalg.Vectors
object linearReg {
def main(args: Array[String]) {
StreamingExamples.setStreamingLogLevels()
val sparkConf = new SparkConf().setAppName("linearReg").setMaster("local")
val sc=new SparkContext(sparkConf)
// Load and parse the data
val data = sc.textFile("/home/daniele/dati.data")
val parsedData = data.map { line =>
val parts = line.split(',')
LabeledPoint(parts(0).toDouble, Vectors.dense(Array(1.0)++parts(1).split(' ').map(_.toDouble)))
}.cache()
parsedData.collect().foreach(println)
// Building the model
val numIterations = 1000
val model = LinearRegressionWithSGD.train(parsedData, numIterations)
println("Interceptor:"+model.intercept)
// Evaluate model on training examples and compute training error
val valuesAndPreds = parsedData.map { point =>
val prediction = model.predict(point.features)
(point.label, prediction)
}
valuesAndPreds.collect().foreach(println)
val MSE = valuesAndPreds.map { case (v, p) => math.pow((v - p), 2) }.mean()
println("training Mean Squared Error = " + MSE)
// Save and load model
model.save(sc, "myModelPath")
val sameModel = LinearRegressionModel.load(sc, "myModelPath")
}
}
Результат:
weights: [-4.062601003207354E25], intercept: -9.484399253945647E24
Update -Используется .train метод -Добавлена 1,0 в качестве дополнения к перехват. Данные выглядят следующим образом: 1.0 добавление
модифицировано в соответствии с вашими требованиями. –
Это дает мне java.lang.NumberFormatException: empty String –
Это исходит из вашего синтаксического кода, а не добавление, которое я сделал относительно 1.0 в качестве функции перехвата ... –