在新数据

时间:2017-06-04 21:10:09

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

我有一个关于历史数据的LinearRegression模型,现在我试图在新数据上重复使用相同的模型来进行预测。

我知道我们可以分别使用model.saveLinearRegression.load方法保存和加载模型,但是,我无法找到将新数据传递到加载模型进行预测的方法。

创建和培训模型的代码粘贴在下面:

val assembler = new VectorAssembler().setInputCols(Array("total", "connected", "c_403", "c_480", "c_503", "hour", "day_of_week")).setOutputCol("features")

val output = assembler.transform(df).select($"label", $"features")
val Array(training, test) = output.select("label", "features").randomSplit(Array(0.7, 0.3), seed = 12)

val lr = new LinearRegression()

val paramGrid = new ParamGridBuilder().addGrid(lr.regParam, Array(0.1, 0.01)).addGrid(lr.fitIntercept).addGrid(lr.elasticNetParam, Array(0.0, 0.25, 0.5, 0.75, 1.0)).build()


val trainvalSplit = new TrainValidationSplit().setEstimator(lr).setEvaluator(new RegressionEvaluator()).setEstimatorParamMaps(paramGrid).setTrainRatio(0.75)
val model = trainvalSplit.fit(training)

val holdout = model.transform(test).select("prediction","label")

1 个答案:

答案 0 :(得分:3)

好的,实际上直截了当但是你需要使用TrainValidationSplitModel而不是LinearRegressionModel来加载你的模型,因为你已经用{{1}保存了你的模型}}:

model.save("/home/waqas/models/lreg")