Cómo obtener precisión / recuperación usando CrossValidator para entrenar el modelo NaiveBayes usando Spark

Supongo que tengo una tubería como esta:

val tokenizer = new Tokenizer().setInputCol("tweet").setOutputCol("words")
val hashingTF = new HashingTF().setNumFeatures(1000).setInputCol("words").setOutputCol("features")
val idf = new IDF().setInputCol("features").setOutputCol("idffeatures")
val nb = new org.apache.spark.ml.classification.NaiveBayes()
val pipeline = new Pipeline().setStages(Array(tokenizer, hashingTF, idf, nb))
val paramGrid = new ParamGridBuilder().addGrid(hashingTF.numFeatures, Array(10, 100, 1000)).addGrid(nb.smoothing, Array(0.01, 0.1, 1)).build()
val cv = new CrossValidator().setEstimator(pipeline).setEvaluator(new BinaryClassificationEvaluator()).setEstimatorParamMaps(paramGrid).setNumFolds(10)
val cvModel = cv.fit(df)

Como puede ver, definí un CrossValidator usando un MultiClassClassificationEvaluator. He visto muchos ejemplos que obtienen métricas como Precisión / Recuperación durante el proceso de prueba, pero estos metris se obtienen cuando utiliza un conjunto diferente de datos para fines de prueba (consulte, por ejemplo, estodocumentación)

Según tengo entendido, CrossValidator creará pliegues y uno se usará para fines de prueba, luego CrossValidator elegirá el mejor modelo. Mi pregunta es, ¿es posible obtener métricas de precisión / recuperación durante el proceso de capacitación?

Respuestas a la pregunta(1)

Su respuesta a la pregunta