gpt4 book ai didi

scala - Spark ML - 保存 OneVsRestModel

转载 作者:行者123 更新时间:2023-12-04 19:01:41 24 4
gpt4 key购买 nike

我正在重构我的代码以利用 DataFrames, Estimators, and Pipelines .我最初使用的是 MLlib Multiclass LogisticRegressionWithLBFGSRDD[LabeledPoint] .我很享受学习和使用新 API,但我不确定如何保存我的新模型并将其应用于新数据。

目前,LogisticRegression的ML实现只支持二分类。我是,而不是使用 OneVsRest像这样:

val lr = new LogisticRegression().setFitIntercept(true)
val ovr = new OneVsRest()
ovr.setClassifier(lr)
val ovrModel = ovr.fit(training)

我现在想保存我的 OneVsRestModel ,但这似乎不受 API 支持。我试过了:
ovrModel.save("my-ovr") // Cannot resolve symbol save
ovrModel.models.foreach(_.save("model-" + _.uid)) // Cannot resolve symbol save

有没有办法保存它,以便我可以将其加载到新应用程序中以进行新预测?

最佳答案

Spark 2.0.0
OneVsRestModel工具MLWritable所以应该可以直接保存。下面显示的方法对于单独保存单个模型仍然很有用。

Spark < 2.0.0

这里的问题是 models返回 ArrayClassificationModel[_, _]]不是 ArrayLogisticRegressionModel (或 MLWritable)。要使其工作,您必须具体说明类型:

import org.apache.spark.ml.classification.LogisticRegressionModel

ovrModel.models.zipWithIndex.foreach {
case (model: LogisticRegressionModel, i: Int) =>
model.save(s"model-${model.uid}-$i")
}

或者更通用:
import org.apache.spark.ml.util.MLWritable

ovrModel.models.zipWithIndex.foreach {
case (model: MLWritable, i: Int) =>
model.save(s"model-${model.uid}-$i")
}

不幸的是,目前(Spark 1.6) OneVsRestModel不实现 MLWritable所以它不能单独保存。

备注 :

所有型号都在 OneVsRest好像用的一样 uid因此我们需要一个明确的索引。稍后识别模型也将很有用。

关于scala - Spark ML - 保存 OneVsRestModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36243455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com