我现在的工作是测试Streaming ML算法的性能,我的想法是在线训练一个Streaming ML模型并保存模型以供离线测试,这就是我所做的。但是当我开始测试性能时,我发现 LinearRegressionModel 中的权重和截距都是 0,这让我很困惑。 我将在下面显示我的代码:
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()
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
所以,我想知道有没有办法将我的流模型加载到 Offline LinearRegressionModel ,或者我可以尝试训练一个离线模型并在我的流模型中使用它?
任何评论将不胜感激
答案 0 :(得分:-1)
我尝试了很多方法专注于如何将经过训练的典型 ML 模型加载到流式 ML 模型,其想法是训练离线模型并保存它。然后,在流应用程序中,例如,在您新建 StreamingLinearRegressionWithSGD 之前,加载您的离线模型并获取权重(或系数)并截取,然后通过 setter 将其放入您的 StreamingLinearRegressionWithSGD。
但是,我的工作还没有完成,训练一个离线模型并在流上下文中使用它对我的工作来说是愚蠢的,因为它仍然是一个离线模型而不是在流上下文中训练的模型,它不能真正反映流式MLAlgotrithm的性能。
我需要一种方法来保存 Streaming ML 模型,任何评论将不胜感激,非常感谢!!!