Я новичок в Scala и Spark в целом. Я использую этот код для регрессии (на основе этой ссылки Spark official site):Средняя квадратичная ошибка (MSE) возвращает огромное количество
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
// Load and parse the data
val data = sc.textFile("Year100")
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 = 100
val stepSize = 0.00000001
val model = LinearRegressionWithSGD.train(parsedData, numIterations,stepSize)
// Evaluate model on training examples and compute training error
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()
println("training Mean Squared Error = " + MSE)
В наборе данных, который я использую, можно посмотреть здесь: Pastebin link.
Так что мой вопрос: почему MSE равна 889717.74 (что огромное количество)?
Edit: Как предложил комментаторы, я попытался это:
1) Я изменил шаг по умолчанию и MSE теперь возвращается, как NaN
2) Если бы я попробовать этот конструктор: LinearRegressionWithSGD.train (parsedData, numIterations, stepSize, intercept = True) искровая оболочка возвращает ошибку (ошибка: не найдена: значение True)
Возможный дубликат [pyspark Линейная регрессия Пример из официальной документации - Плохие результаты?] (Http://stackoverflow.com/questions/33842982/pyspark-linear-regression-example-from-official-documentation-bad-results) –