Мне интересно узнать об интеграции Spring Boot с набором данных Apache Spark - PullRequest
1 голос
/ 06 мая 2020

Я хочу создать веб-страницу с помощью Spring Boot и показать результат набора данных, используя там apache spark ml.

Скажите, пожалуйста, как решить эту проблему. Мой код ниже. Тип результата: Dataset<Row>

Какой тип мне следует изменить для печати в Интернете? Я попытался вызвать метод execute в приложении Spring Boot

В заключение я пытаюсь отобразить результаты вычислений в IDE в Интернете.

public class BLR_class {
    static train_test_split_Binary_Classification set = new train_test_split_Binary_Classification();

    static Dataset<Row> train_set = set.split()[0];
    static Dataset<Row> test_set = set.split()[1];

    public static void main(String[] args) {
    }

    public static double execute() {
        Dataset<Row> pred_result = predict();
        pred_result.select("OX", "prediction", "features").show();

        System.out.println("=========================================");

        Dataset<Row> pred_best = tuning();
        pred_best.select("OX", "prediction", "features").show();

        double UnderROC_rate = under_ROC_rate();
        System.out.println("UnderROC_rate = " + UnderROC_rate);

        Dataset<Row> result = pred_best.select("OX", "prediction", "features");

        return result
    }

    public static LogisticRegression LR() {
        LogisticRegression lr = new LogisticRegression()
                .setMaxIter(100)
                .setRegParam(0.03)
                .setLabelCol("OX")
                .setFeaturesCol("features");

        return lr;
    }

    public static LogisticRegressionModel fit() {
        LogisticRegression lr = LR();

        // Fit the model
        LogisticRegressionModel lr_Model = lr.fit(train_set);

        return lr_Model;
    }

    public static Dataset<Row> predict() {
        LogisticRegressionModel lr_Model = fit();

        Dataset<Row> predicted = lr_Model.transform(test_set);

        return predicted;
    }

    public static Dataset<Row> tuning() {
        LogisticRegression lr = LR();

        BinaryClassificationEvaluator evaluator = new BinaryClassificationEvaluator()
                .setLabelCol("OX")
                .setRawPredictionCol("rawPrediction")
                .setMetricName("areaUnderROC");

        CrossValidator crossval = new CrossValidator().setEstimator(lr).setEvaluator(evaluator);
        ParamMap[] paramgrid = new ParamGridBuilder()
//                .addGrid(lr.regParam(), new double[] {0.01, 0.03, 0.05, 0.3, 0.5})
                .addGrid(lr.regParam(), new double[] {0.01})
//                .addGrid(lr.maxIter(), new int[] {100, 200, 300, 500})
                .addGrid(lr.maxIter(), new int[] {100})
                .build();

        crossval.setEstimatorParamMaps(paramgrid);
        crossval.setNumFolds(5); 

        CrossValidatorModel CV_model = crossval.fit(train_set);
        Model lr_model_best = CV_model.bestModel();

        Dataset<Row> predicted_best = lr_model_best.transform(test_set);

        return predicted_best;
    }

    public static double under_ROC_rate() {
        Dataset<Row> predicted_best = tuning();

        BinaryClassificationEvaluator evaluator = new BinaryClassificationEvaluator()
                .setLabelCol("OX")
                .setRawPredictionCol("rawPrediction")
                .setMetricName("areaUnderROC");

        double areaUnderROC_best = evaluator.evaluate(predicted_best);

        return areaUnderROC_best;
    }
}
...