【问题标题】:Loading a trained crossValidation model in Spark在 Spark 中加载经过训练的 crossValidation 模型
【发布时间】:2016-04-06 09:15:38
【问题描述】:

我是 Apache Spark 的新手。我使用 crossValidation 训练了一个 LogisticRegression 模型。例如:

val cv = new CrossValidator() .setEstimator(管道) .setEvaluator(新的 BinaryClassificationEvaluator) .setEstimatorParamMaps(paramGrid) .setNumFolds(5) val cvModel = cv.fit(数据)

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

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

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

【问题讨论】:

    标签: apache-spark logistic-regression cross-validation bigdata


    【解决方案1】:

    您正在尝试使用 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")
    

    【讨论】:

      【解决方案2】:

      要加载交叉验证器,它应该是

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

      要加载交叉验证器模型,请使用 (注意:当您在 CrossValidator 上调用 fit() 时,Cross Validator 将成为 Cross Validator 模型)

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

      由于您尝试加载模型,CrossValidatorModel.load 将是正确的。

      【讨论】:

        猜你喜欢
        • 2018-01-11
        • 2017-07-28
        • 1970-01-01
        • 2018-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-09
        • 2020-12-03
        相关资源
        最近更新 更多