Spark ML - MulticlassClassificationEvaluator - can we get precision/recall by each class label?

3.1k views Asked by At

I am doing a multiclass prediction with random forest in Spark ML.

For this MulticlassClassificationEvaluator() in spark ML, is it possible to get precision/recall by each class labels?

Currently, I am only seeing precision/recall combined for all class together.

2

There are 2 answers

0
Owlright On

Looking at the class documentation this doesn't seem to be possible, using the built-in methods.

Although not exactly what you are looking for, you could use weightedPrecisionand weightedRecall in the metricName method. This will at least account for class imbalances.

0
Som On

Use directly org.apache.spark.mllib.evaluation.MulticlassMetrics and then get metrics available-

// copied from spark git
val predictionAndLabels =
      dataset.select(col($(predictionCol)), col($(labelCol)).cast(DoubleType)).rdd.map {
        case Row(prediction: Double, label: Double) => (prediction, label)
      }
    val metrics = new MulticlassMetrics(predictionAndLabels)