问题描述
我对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 (将#修改为@)