Wie erhalte ich mit CrossValidator Präzision / Rückruf für das Training des NaiveBayes-Modells mit Spark

Supossed Ich habe eine Pipeline wie diese:

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)

Wie Sie sehen können, habe ich einen CrossValidator mit einem MultiClassClassificationEvaluator definiert. Ich habe viele Beispiele gesehen, bei denen während des Testprozesses Metriken wie Precision / Recall abgerufen wurden, aber diese Metriken werden abgerufen, wenn Sie zu Testzwecken einen anderen Datensatz verwenden (siehe z. B. thisDokumentatio).

Meines Wissens nach erstellt CrossValidator Falten und eine Falte wird zu Testzwecken verwendet. Anschließend wählt CrossValidator das beste Modell aus. Meine Frage ist, ist es möglich, während des Trainings Präzisions- / Rückrufmetriken abzurufen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage