Skip to content

Commit 79e8476

Browse files
committed
Replacing fold(_ + _) with sum as suggested by srowen
1 parent ca46765 commit 79e8476

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

mllib/src/main/scala/org/apache/spark/mllib/evaluation/MultilabelMetrics.scala

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)