我的目标是使用我的TRAIN,VALIDATION和TEST数据集在H2O中创建DRF模型,并在TEST模型上预测RMSE,R2,MSE等。
以下是一段代码:
DRFParameters rfParms = (DRFParameters) algParameter;
rfParms._response_column = trainDataFrame._names[responseColumn(trainDataFrame)]; //The response column
rfParms._train = trainDataFrame._key;
//rfParms._valid = testDataFrame._key;
rfParms._nfolds = 5;
DRF job = new DRF(rfParms);
DRFModel drf = job.trainModel().get(); // Train the model
Frame pred = drf.score(testDataFrame); //Score the test
此处我不知道在得分后如何继续寻找预测(R2,RMSE,MSE,MAE等)。
您能否帮助使用JAVA帮助进行H2O DRF建模和预测计算?
答案 0 :(得分:0)
根据您的模型是回归模型,二项式还是多项模型,您必须使用ModelMetricsRegression.make()
,ModelMetricsBinomial.make()
或ModelMetricsMultinomial.make()
之一。它们的签名略有不同 - 您可以在我们的Java文档中找到它们。
对于trainDataFrame
您可以从drf
模型中获取它们,它位于drf._output._training_metrics
中(您可能需要将其转换为合适的类型,因为这是一个通用ModelMetrics
)。如果您将测试数据集用作验证框架,则可以从drf._output._validation_metrics
获取指标。
@Edit:
DRFModel drf = job.trainModel().get(); // Train the model
Frame pred = drf.score(testDataFrame); //Score the test
ModelMetricsBinomial mm = ModelMetricsBinomial.make(preds.vec(2), trainDataFrame.vec(rfParms._response_column));
double auc = mm.auc();
double rmse = mm.rmse();
double r2 = mm.r2();
// etc.