我是 Apache Spark 的新手。我使用交叉验证训练了一个 LogisticRegression 模型。例如:
val cv = new CrossValidator() .setEstimator(pipeline) .setEvaluator(new BinaryClassificationEvaluator) .setEstimatorParamMaps(paramGrid) .setNumFolds(5) val cvModel = cv.fit(data)
我能够毫无错误地训练和测试我的模型。然后我使用以下方法保存了模型和管道:
cvModel.save("/path-to-my-model/spark-log-reg-transfer-model") pipeline.save("/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")
关于apache-spark - 在 Spark 中加载经过训练的交叉验证模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36446629/