加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Spark加载模型并继续训练

发布时间:2020-12-16 18:29:00 所属栏目:安全 来源:网络整理
导读:我正在使用 Scala和Spark 2.0来训练一个使用LinearRegression的模型. val lr = new LinearRegression() .setMaxIter(num_iter) .setRegParam(reg) .setStandardization(true)val model = lr.fit(data) 这工作正常,我得到了很好的结果. 我保存了模型并将其加
我正在使用 Scala和Spark 2.0来训练一个使用LinearRegression的模型.

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

val model = lr.fit(data)

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

val model = LinearRegressionModel.load("models/LRModel")
val result = model.transform(data).select("prediction")

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

保存:

model.save("models/LRModel")
lr.save("models/LR")

加载:

val lr = LinearRegression.load("models/LR")
val model = LinearRegressionModel.load("models/LRModel")

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

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

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

解决方法

您可以使用管道来保存和加载机器学习模型.

import org.apache.spark.ml.regression.LinearRegression
import org.apache.spark.ml.PipelineModel
val lr = new LinearRegression().setLabelCol("labesl").setFeaturesCol("features").setMaxIter(10).setRegParam(1.0).setElasticNetParam(1.0)

val pipeline = new Pipeline().setStages(Array(lr))

pipeline.fit(trainingData)

pipeline.write.overwrite().save("hdfs://.../spark/mllib/models/linearRegression");

val sameModel = PipelineModel.load("hdfs://...")

sameModel.transform(assembler).select("features","labels","prediction").show(

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读