org.apache.spark.ml.regression.LinearRegression:适合,训练和预测

时间:2017-05-10 16:05:19

标签: scala apache-spark apache-spark-mllib

考虑以下来自documentation的Spark MLlib代码:

import org.apache.spark.ml.regression.LinearRegression

// Load training data
val training = spark.read.format("libsvm")
  .load("data/mllib/sample_linear_regression_data.txt")

val lr = new LinearRegression()
  .setMaxIter(10)
  .setRegParam(0.3)
  .setElasticNetParam(0.8)

// Fit the model
val lrModel = lr.fit(training)

// Print the coefficients and intercept for linear regression
println(s"Coefficients: ${lrModel.coefficients} Intercept: ${lrModel.intercept}")

// Summarize the model over the training set and print out some metrics
val trainingSummary = lrModel.summary
println(s"numIterations: ${trainingSummary.totalIterations}")
println(s"objectiveHistory: [${trainingSummary.objectiveHistory.mkString(",")}]")
trainingSummary.residuals.show()
println(s"RMSE: ${trainingSummary.rootMeanSquaredError}")
println(s"r2: ${trainingSummary.r2}")

我看到有一种适合的方法,其效果类似于训练。但我在API docs中找不到任何预测方法。

是否应该没有预测功能?现在,我知道我可以通过获取模型系数的点积和我试图预测并添加模型截距的点来进行预测。

但这是图书馆作家期望人们做的事情。

1 个答案:

答案 0 :(得分:1)

您要查找的方法是transform,它是几乎所有ML模型的一部分。这会收到一个DataFrame,其中包含一个名为features.

的列