簡體   English   中英

如何在Apache Spark中獲取評估數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM