Apache spark 在Spark中加载经过训练的交叉验证模型

Apache spark 在Spark中加载经过训练的交叉验证模型,apache-spark,logistic-regression,cross-validation,bigdata,Apache Spark,Logistic Regression,Cross Validation,Bigdata,我是Apache Spark的新手。我使用交叉验证训练了一个逻辑回归模型。例如: val cv=新的交叉验证程序() .setEstimator(管道) .setEvaluator(新的BinaryClassificationEvaluator) .SetParamMaps(paramGrid) .setNumFolds(5) val cvModel=cv.拟合(数据) 我能够毫无差错地训练和测试我的模型。然后,我使用以下方法保存了模型和管道: cvModel.save(“/path to my

我是Apache Spark的新手。我使用交叉验证训练了一个逻辑回归模型。例如:

val cv=新的交叉验证程序() .setEstimator(管道) .setEvaluator(新的BinaryClassificationEvaluator) .SetParamMaps(paramGrid) .setNumFolds(5) val cvModel=cv.拟合(数据)

我能够毫无差错地训练和测试我的模型。然后,我使用以下方法保存了模型和管道:

cvModel.save(“/path to my model/spark log reg transfer model”) 保存(“/path to my pipeline/spark log reg transfer pipeline”)

在这一阶段之前,操作都很完美。随后,我尝试重新加载模型,以便对新数据点进行预测,然后出现以下错误:

val sameModel=PipelineModel.load(“/path to my model/spark log reg transfer model”)

java.lang.IllegalArgumentException:需求失败:加载元数据时出错:应为类名org.apache.spark.ml.PipelineModel,但找到类名org.apache.spark.ml.tuning.CrossValidatorModel


知道我做错了什么吗?谢谢。

您正在尝试使用PipelineModel对象加载CrossValidator。 你应该使用正确的装载机

val crossValidator = CrossValidator.load("/path-to-my-model/spark-log-reg-transfer-model")

val sameModel = PipelineModel.load("/path-to-my-pipeline/spark-log-reg-transfer-pipeline")

要加载交叉验证程序,它应该

val crossValidator = CrossValidator.load("/path-to-my-model/spark-log-reg-transfer-model")
要加载交叉验证程序模型,请使用 (注意:在CrossValidator上调用fit()时,交叉验证器将成为交叉验证器模型)

因为您正在尝试加载模型,所以CrossValidatorModel.load将是正确的

val crossValidatorModel = CrossValidatorModel.load("/path-to-my-model/spark-log-reg-transfer-model")