【问题标题】:How can I access computed metrics for each fold in a CrossValidatorModel如何访问 CrossValidatorModel 中每个折叠的计算指标
【发布时间】:2017-06-02 15:37:27
【问题描述】:

如何从CrossValidatorModel 中的spark.ml 中获取每个折叠的计算指标?我知道我可以使用model.avgMetrics 获得平均指标,但是否有可能获得每个折叠的原始结果以查看例如。结果的方差?

我使用的是 Spark 2.0.0。

【问题讨论】:

    标签: apache-spark apache-spark-ml


    【解决方案1】:

    学习spark code here

    对于折叠,您可以像这样自己进行迭代:

        val splits = MLUtils.kFold(dataset.toDF.rdd, $(numFolds), $(seed))
        //K-folding operation starting
        //for each fold you have multiple models created cfm. the paramgrid
        splits.zipWithIndex.foreach { case ((training, validation), splitIndex) =>
          val trainingDataset = sparkSession.createDataFrame(training, schema).cache()
          val validationDataset = sparkSession.createDataFrame(validation, schema).cache()
    
    
          val models = est.fit(trainingDataset, epm).asInstanceOf[Seq[Model[_]]]
          trainingDataset.unpersist()
          var i = 0
          while (i < numModels) {
            val metric = eval.evaluate(models(i).transform(validationDataset, epm(i)))
            logDebug(s"Got metric $metric for model trained with ${epm(i)}.")
            metrics(i) += metric
            i += 1
          }
    

    这是在 scala 中,但思路非常清晰。

    查看this answer,它概述了每折的结果。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2023-02-14
      • 2019-01-18
      • 2023-02-08
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      • 2020-05-23
      • 1970-01-01
      相关资源
      最近更新 更多