0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 from pyspark.mllib.evaluation import MultilabelMetrics
0020
0021 from pyspark import SparkContext
0022
0023 if __name__ == "__main__":
0024 sc = SparkContext(appName="MultiLabelMetricsExample")
0025
0026 scoreAndLabels = sc.parallelize([
0027 ([0.0, 1.0], [0.0, 2.0]),
0028 ([0.0, 2.0], [0.0, 1.0]),
0029 ([], [0.0]),
0030 ([2.0], [2.0]),
0031 ([2.0, 0.0], [2.0, 0.0]),
0032 ([0.0, 1.0, 2.0], [0.0, 1.0]),
0033 ([1.0], [1.0, 2.0])])
0034
0035
0036 metrics = MultilabelMetrics(scoreAndLabels)
0037
0038
0039 print("Recall = %s" % metrics.recall())
0040 print("Precision = %s" % metrics.precision())
0041 print("F1 measure = %s" % metrics.f1Measure())
0042 print("Accuracy = %s" % metrics.accuracy)
0043
0044
0045 labels = scoreAndLabels.flatMap(lambda x: x[1]).distinct().collect()
0046 for label in labels:
0047 print("Class %s precision = %s" % (label, metrics.precision(label)))
0048 print("Class %s recall = %s" % (label, metrics.recall(label)))
0049 print("Class %s F1 Measure = %s" % (label, metrics.f1Measure(label)))
0050
0051
0052 print("Micro precision = %s" % metrics.microPrecision)
0053 print("Micro recall = %s" % metrics.microRecall)
0054 print("Micro F1 measure = %s" % metrics.microF1Measure)
0055
0056
0057 print("Hamming loss = %s" % metrics.hammingLoss)
0058
0059
0060 print("Subset accuracy = %s" % metrics.subsetAccuracy)
0061