执行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/