Как получить Precision / Recall с использованием CrossValidator для обучения модели NaiveBayes с использованием Spark

Предполагается, что у меня есть такой конвейер:

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)

Как видите, я определил CrossValidator с помощью MultiClassClassificationEvaluator. Я видел много примеров получения метрик, таких как Precision / Recall, во время процесса тестирования, но эти метрики получаются, когда вы используете другой набор данных для целей тестирования (см., Например, этодокументация).

Насколько я понимаю, CrossValidator собирается создавать складки, и один из них будет использоваться для тестирования, тогда CrossValidator выберет лучшую модель. У меня вопрос, возможно ли получить метрики Precision / Recall в процессе обучения?

Ответы на вопрос(1)

Ваш ответ на вопрос