2017-06-04 7 views
0

私はLinearRegressionモデルを履歴データに基づいて訓練しましたが、新しいモデルで同じモデルを再利用して予測を行っています。新しいデータにspark mllib 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") 
+0

モデルを新しいデータで再学習したいですか? – eliasah

+0

実際、私はこの訓練されたモデルを使用して新しいデータを予測したいと考えています – Waqas

+0

モデルをどのように保存していますか?私はコード内でこれを共有していません – eliasah

答えて

1

[OK]をそれが実際にまっすぐ進むのですが、あなたは、あなたのモデルを保存していることを考えると、あなたのモデルをロードするTrainValidationSplitModelないLinearRegressionModelを使用する必要がありますmodel.save("/home/waqas/models/lreg")

scala> import org.apache.spark.ml.tuning.TrainValidationSplitModel 

scala> val model2 = TrainValidationSplitModel.load("/home/waqas/models/lreg") 
// model2: org.apache.spark.ml.tuning.TrainValidationSplitModel = tvs_99887a2f788d 

scala> model2.transform(newData).show(3) 
// +-----+--------------------+--------------------+ 
// |label|   features|   prediction| 
// +-----+--------------------+--------------------+ 
// | 0.0|(692,[121,122,123...| 0.11220528529664375| 
// | 0.0|(692,[122,123,148...| 0.1727599038728312| 
// | 0.0|(692,[123,124,125...|-0.09619225628995537| 
// +-----+--------------------+--------------------+ 
// only showing top 3 rows 
+0

@Waqasあなたは新しいデータを準備する必要があります。 – eliasah

関連する問題