如何使用SparkJAVA API预测样本外的值

问题描述

我对Spark很陌生,需要使用JAVA api。我们的目标是实时提供预测,用户将在其中提供一些变量,但当然不会提供标签或目标变量。

但是模型似乎需要将数据分为训练数据和测试数据,以进行训练和验证。

如何从用户即时查询的样本数据中获取预测和RMSE?

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

我的样本数据格式如下(其中0表示用户无法提供的数据)

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);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...