apache-spark - Spark CrossValidatorModel是否可以访问除bestModel以外的其他模型?

标签 apache-spark apache-spark-mllib cross-validation apache-spark-1.6

我正在使用Spark 1.6.1:

目前,我正在使用CrossValidator来训练具有各种参数的ML管道。在训练过程之后,我可以使用CrossValidatorModel的bestModel属性来获得在交叉验证期间表现最佳的模型。
交叉验证的其他模型是否会自动丢弃,或者我是否可以选择性能比bestModel差的模型?

我问是因为我正在使用F1分数度量标准进行交叉验证,但是我也对所有模型的weightedRecall感兴趣,而不仅仅是在交叉验证过程中表现最佳的模型

val folds = 6
val cv = new CrossValidator()
  .setEstimator(pipeline)
  .setEvaluator(new MulticlassClassificationEvaluator)
  .setEstimatorParamMaps(paramGrid)
  .setNumFolds(folds)

val avgF1Scores = cvModel.avgMetrics

val predictedDf = cvModel.bestModel.transform(testDf)

// Here I would like to predict as well with the other models of the cross validation

最佳答案

Spark> = 2.4.0 (> = 2.3.0 in Scala)

SPARK-21088 CrossValidator,TrainValidationSplit在拟合时应收集所有模型-添加了对收集子模型的支持。

cv = CrossValidator(..., collectSubModels=True)

model = cv.fit(...)
model.subModels

Spark <2.4

如果要访问所有中间模型,则必须从头开始创建自定义交叉验证器。 o.a.s.ml.tuning.CrossValidator丢弃其他模型,并且仅将最佳模型和指标复制到CrossValidatorModel

另请参阅Pyspark - Get all parameters of models created with ParamGridBuilder

关于apache-spark - Spark CrossValidatorModel是否可以访问除bestModel以外的其他模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38874546/

相关文章:

scala - Spark 提供 DataFrame groupBy 中所有列的列表

apache-spark - PySpark 和 MLLib : Random Forest Feature Importances

hadoop - Spark - Snappy 库不可用

r - 如何拆分训练数据和测试数据以确保训练和测试中都存在相同的因素组合?

r - 将交叉验证折叠分配给 for 循环中的数据集

r - Caret 交叉验证中每个折叠的测试集和训练集

java - 如何在 Java 的 Spark Streaming 中解析复杂的 JSON 数据

scala - 为什么 Spark Streaming 应用程序使用 sbt run 可以正常工作,但不能在 Tomcat(作为 Web 应用程序)上运行?

java - 在 Java 应用程序中使用的 Spark 模型

scala - 如何在 Spark SQL 中使用 CROSS JOIN 和 CROSS APPLY