如何使用spark(javaapi)预测样本外的值

oknrviil  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(250)

我是spark的新手,需要使用JavaAPI。我们的目标是动态地提供预测,用户将提供一些变量,但当然不是标签或目标变量。
但是模型似乎需要将数据分成训练数据和测试数据,以便进行训练和验证。
如何获得用户将动态查询的样本外数据的预测和rmse?

Dataset<Row>[] splits = df.randomSplit(new double[] {0.99, 0.1});
        Dataset<Row> trainingData = splits[0];
        Dataset<Row> testData = df_p;

我的示例外数据具有以下格式(其中0s是用户无法提供的数据)

IMO,PORT_ID,DWT,TERMINAL_ID,BERTH_ID,TIMESTAMP,label,OP_ID
0000000,1864,80000.00,5689,6060,2020-08-29 00:00:00.000,1,2

“标签”是我想要预测的结果。
我就是这样使用模型的:

// Train a GBT model.
        GBTRegressor gbt = new GBTRegressor()
                .setLabelCol("label")
                .setFeaturesCol("features")
                .setMaxIter(10);

// Chain indexer and GBT in a Pipeline.
        Pipeline pipeline = new Pipeline().setStages(new PipelineStage[] {assembler, gbt, discretizer});

// Train model. This also runs the indexer.
        PipelineModel model = pipeline.fit(trainingData);

// Make predictions.
        Dataset<Row> predictions = model.transform(testData);

// Select example rows to display.
        predictions.select("prediction", "label", "weekofyear", "dayofmonth", "month", "year", "features").show(150);

// Select (prediction, true label) and compute test error.
        RegressionEvaluator evaluator = new RegressionEvaluator()
                .setLabelCol("label")
                .setPredictionCol("prediction")
                .setMetricName("rmse");
        double rmse = evaluator.evaluate(predictions);
        System.out.println("Root Mean Squared Error (RMSE) on test data = " + rmse);

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题