执行SVM分类时,使用org.apache.spark.mllib.evaluation.MulticlassMetrics,如下所示。

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


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

版本:Spark 1.3.0,Java 1.7

最佳答案

我从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之后,结果可能在不同的part *文件中,您可以使用cat或getmerge命令一次读取完整的片段。

附言:我不知何故发现精度和召回率没有按预期工作,但混淆矩阵是正确的。

关于java - Spark:如何保存MulticlassMetrics混淆矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30340129/

10-12 16:40