如何在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中我该如何做到这一点?


回答:

要将预测数据集保存到文件中,可以将Dataset转换为JavaRDD,并通过执行predictions.javaRDD().saveAsTextFile(<file path>);将JavaRDD写入文件。

以下是多类分类评估器的指标:
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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注