[英]How to get evaluated data in Apache Spark?
我实现了一个简单的朴素贝叶斯方法,该方法与spark教程中的给定示例完全相同。 这是我的实现方式:
public void applyNaiveBayes(String fileWithBinaryLabelsPath){
Dataset<Row> dataFrame =
sparkBase.getSpark().read().format("libsvm").load(fileWithBinaryLabelsPath);
Dataset<Row>[] splits = dataFrame.randomSplit(new double[]{0.8, 0.2}, 1234L);
Dataset<Row> train = splits[0];
Dataset<Row> test = splits[1];
NaiveBayes nb = new NaiveBayes();
NaiveBayesModel model = nb.fit(train);
Dataset<Row> predictions = model.transform(test);
predictions.show();
MulticlassClassificationEvaluator evaluator = new MulticlassClassificationEvaluator()
.setLabelCol("label")
.setPredictionCol("prediction")
.setMetricName("accuracy");
double accuracy = evaluator.evaluate(predictions);
System.out.println("Test set accuracy = " + accuracy);
}
它运作良好。 但是我还需要一件事。 在这里,我将%20的数据用作测试数据。 在计算之后,我想获得结果数据,我的意思是每行预测的朴素贝叶斯。 如何在Java中做到这一点?
要将预测数据集保存到文件中,请将数据集转换为JavaRDD并将JavaRDD写入文件中,方法是发出predictions.javaRDD().saveAsTextFile(<file path>);
以下是“多类分类”评估器的度量标准:
https://spark.apache.org/docs/2.2.0/api/java/org/apache/spark/ml/evaluation/MulticlassClassificationEvaluator.html#metricName--
由于您将朴素贝叶斯模型与二进制分类一起使用,因此需要使用二进制分类评估器:
https://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/ml/evaluation/BinaryClassificationEvaluator.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.