【问题标题】:Spark pipeline evaluationSpark 管道评估
【发布时间】:2017-03-25 14:44:27
【问题描述】:

如何在 spark 管道中获取评估器的结果?

val evaluator = new BinaryClassificationEvaluator()

val cv = new CrossValidator()
  .setEstimator(pipeline)
  .setEvaluator(evaluator)
  .setEstimatorParamMaps(paramGrid)
  .setNumFolds(10)

变换操作的结果只包含标签、概率和预测。

可以获得“最佳模型”,但我更愿意对获得评估指标感兴趣。

这里https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-mllib/spark-mllib-evaluators.html 他们展示了如何在没有管道的情况下使用评估器。

似乎没有一个非常有趣的链接使用evaluatorhttps://benfradet.github.io/blog/2015/12/16/Exploring-spark.ml-with-the-Titanic-Kaggle-competition,这里的https://developer.ibm.com/spark/blog/2016/02/22/predictive-model-for-online-advertising-using-spark-machine-learning-pipelines/ 或者官方例子中的https://github.com/apache/spark/blob/39e2bad6a866d27c3ca594d15e574a1da3ee84cc/examples/src/main/scala/org/apache/spark/examples/ml/ModelSelectionViaCrossValidationExample.scala 是最后显示的Evaluator 的结果。

事实上,其中一个链接是手动计算指标的:

cvAccuracy = cvPrediction.filter(cvPrediction['label'] == cvPrediction['prediction']).count() / float(cvPrediction.count

我本来希望获得性能水平或平均值/方差的指标。

【问题讨论】:

  • 您对每个paramGrid 值的性能指标感兴趣吗?
  • 有点。我想检查参数设置 A 或算法 B 是否优于其他设置/算法。

标签: apache-spark pipeline metrics evaluation apache-spark-ml


【解决方案1】:

CrossValidatorModel 不仅包含具有最高平均交叉验证指标的最佳模型(也称为 bestModel),还包含评估的每个参数映射的指标。

要获取这些,可以将getEstimatorParamMaps 方法与avgMetrics 结合使用,例如:

val cvModel = cv.fit(training)
cvModel.getEstimatorParamMaps.zip(cvModel.avgMetrics)

【讨论】:

  • 非常感谢 - 正是我一直在寻找的。​​span>
  • 但无法获得有关方差 /std-dev 的指标?
猜你喜欢
  • 2015-12-21
  • 2021-12-27
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 2017-12-31
相关资源
最近更新 更多