【发布时间】:2026-02-03 14:20:05
【问题描述】:
我现在的工作是测试 Streaming ML 算法的性能,我的想法是在线训练一个 Streaming ML 模型并将模型保存以供离线测试,这就是我所做的。但是当我开始测试性能时,我发现LinearRegressionModel中的权重和截距都是0,这让我很困惑。 我将在下面显示我的代码:
- 这是训练流模型的代码,在每批完成 trainOn 时保存或更新模式:
val lr: StreamingLinearRegressionWithSGD = new StreamingLinearRegressionWithSGD().setInitialWeights(Vectors.zeros(10))
lr.trainOn(trainingLabeledPointDS)
val model: LinearRegressionModel = lr.latestModel()
model.save(ssc.sparkContext,"model path")
ssc.start()
ssc.awaitTermination()
- 这是离线部分,从 modelPath 加载模型,我认为它应该是权重和截距值,但它全为 0(默认值):
val lrModel: LinearRegressionModel = LinearRegressionModel.load(spark.sparkContext, modelPath)
println(lrModel.weights) // [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
println(lrModel.intercept) // 0.0
所以,我想知道有没有办法将我的流模型加载到离线 LinearRegressionModel,或者我可以尝试训练一个离线模型并在我的流模型中使用它?
任何评论将不胜感激
【问题讨论】:
标签: apache-spark spark-streaming