Spark:如何保存MulticlassMetrics混淆矩阵

时间:2015-05-20 04:11:54

标签: java apache-spark

执行SVM分类时使用

org.apache.spark.mllib.evaluation.MulticlassMetrics,如下所示。

 MulticlassMetrics metrics = new MulticlassMetrics(predictionAndLabels.rdd());
 System.out.println(metics.confusionMatrix());

我想在MulticlassMetics中保留一些有用的matrics,例如精度,回忆和混淆矩阵。谁知道怎么做?我可以将它们打印出来,但不知道如何将它们保存到spark文件中。

版本:spark 1.3.0,java 1.7

1 个答案:

答案 0 :(得分:1)

我发现org.apache.spark.mllib.evaluation.MulticlassMetrics中的MulticlassMetrics类可以实现此目的。

 MulticlassMetrics metrics = new MulticlassMetrics(predictionAndLabels.rdd());

并将结果指标(精度,召回和混淆矩阵)写入字符串RDD。

 JavaRDD<String> metricsResult = sc.parallelize(Arrays.asList(
       "Precision: " + metrics.precision(), 
       "\nRecall: " +metrics.recall(), 
       "\nConfusion metrics: \n" + metrics.confusionMatrix()));

在saveAsTextFile之后,结果可能在不同的部分*文件中,您可以使用cat或getmerge命令一次读取完整的部分。

p.s。,不知怎的,我发现精确度和召回不能按预期工作,但混淆矩阵是正确的。