小编Sil*_*ilu的帖子

Spark负载模型并继续培训

我正在使用ScalaSpark 2.0来训练一个使用LinearRegression的模型.

val lr = new LinearRegression()
  .setMaxIter(num_iter)
  .setRegParam(reg)
  .setStandardization(true)

val model = lr.fit(data)
Run Code Online (Sandbox Code Playgroud)

这工作正常,我得到了很好的结果.我保存了模型并将其加载到另一个类中以进行一些预测:

val model = LinearRegressionModel.load("models/LRModel")
val result = model.transform(data).select("prediction")
Run Code Online (Sandbox Code Playgroud)

现在我想继续用新数据训练模型,所以我保存了模型并加载它以继续训练.

保存:

model.save("models/LRModel")
lr.save("models/LR")
Run Code Online (Sandbox Code Playgroud)

加载:

val lr = LinearRegression.load("models/LR")
val model = LinearRegressionModel.load("models/LRModel")
Run Code Online (Sandbox Code Playgroud)

问题是,当我加载模型时,没有fit或没有train继续训练的功能.当我加载LinearRegression对象时,它似乎不保存权重,只保存算法的参数.我通过训练相同数量的相同迭代次数来测试它,结果完全相同,rootMeanSquaredError并且在这个学习点上肯定没有收敛.我也无法将模型加载到LinearRegression中,导致错误:

Exception in thread "main" java.lang.NoSuchMethodException: org.apache.spark.ml.regression.LinearRegressionModel.<init>(java.lang.String)
Run Code Online (Sandbox Code Playgroud)

所以问题是,如何让LinearRegression对象使用保存的LinearRegressionModel?

scala machine-learning linear-regression apache-spark

6
推荐指数
1
解决办法
2738
查看次数