@@ -48,40 +48,37 @@ class MultilabelMetrics(predictionAndLabels:RDD[(Set[Double], Set[Double])]) ext
4848 * @return Accuracy.
4949 */
5050 lazy val accuracy = predictionAndLabels.map{ case (predictions, labels) =>
51- labels.intersect(predictions).size.toDouble / labels.union(predictions).size}.
52- fold(0.0 )(_ + _) / numDocs
51+ labels.intersect(predictions).size.toDouble / labels.union(predictions).size}.sum / numDocs
5352
5453 /**
5554 * Returns Hamming-loss
5655 * @return hammingLoss.
5756 */
5857 lazy val hammingLoss = (predictionAndLabels.map{ case (predictions, labels) =>
5958 labels.diff(predictions).size + predictions.diff(labels).size}.
60- fold( 0 )(_ + _) ).toDouble / (numDocs * numLabels)
59+ sum ).toDouble / (numDocs * numLabels)
6160
6261 /**
6362 * Returns Document-based Precision averaged by the number of documents
6463 * @return macroPrecisionDoc.
6564 */
6665 lazy val macroPrecisionDoc = (predictionAndLabels.map{ case (predictions, labels) =>
6766 if (predictions.size > 0 )
68- predictions.intersect(labels).size.toDouble / predictions.size else 0 }.fold(0.0 )(_ + _)) /
69- numDocs
67+ predictions.intersect(labels).size.toDouble / predictions.size else 0 }.sum) / numDocs
7068
7169 /**
7270 * Returns Document-based Recall averaged by the number of documents
7371 * @return macroRecallDoc.
7472 */
7573 lazy val macroRecallDoc = (predictionAndLabels.map{ case (predictions, labels) =>
76- labels.intersect(predictions).size.toDouble / labels.size}.fold( 0.0 )(_ + _) ) / numDocs
74+ labels.intersect(predictions).size.toDouble / labels.size}.sum ) / numDocs
7775
7876 /**
7977 * Returns Document-based F1-measure averaged by the number of documents
8078 * @return macroRecallDoc.
8179 */
8280 lazy val macroF1MeasureDoc = (predictionAndLabels.map{ case (predictions, labels) =>
83- 2.0 * predictions.intersect(labels).size /
84- (predictions.size + labels.size)}.fold(0.0 )(_ + _)) / numDocs
81+ 2.0 * predictions.intersect(labels).size / (predictions.size + labels.size)}.sum) / numDocs
8582
8683 /**
8784 * Returns micro-averaged document-based Precision
0 commit comments