如何使用保存的.rds h2o模型进行预测?

问题描述 投票:1回答:1

我使用mlr和h2o包创建了一个R模型,如下所示

library(h2o)
rfh20.lrn = makeLearner("classif.h2o.randomForest", predict.type = "prob")

完成模型调整和模型启动h2o JVM并将R连接到h2o集群,完成建模并将模型保存为.rds文件。

saveRDS(h2orf_mod, "h2orf_mod.rds")

我做预测

pred_h2orf <- predict(h2orf_mod, newdata = newdata)

然后我关机h2o

h2o.shutdown()

后来我重新调用了保存的模型

h2orf_mod <- readRDS("h2orf_mod.rds")

启动h2o以便JVM将R连接到h2o集群

h2o.init()

现在模型是从本地保存的位置,集群不知道模型,当我做预测时,我得到明显的错误

ERROR: Unexpected HTTP Status code: 404 Not Found (url = http://localhost:54321/4/Predictions/models/DRF_model_R_1553297204511_743/frames/data.frame_sid_b520_1)

water.exceptions.H2OKeyNotFoundArgumentException
 [1] "water.exceptions.H2OKeyNotFoundArgumentException: Object 'DRF_model_R_1553297204511_743' not found in function: predict for argument: model"
Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page, : ERROR MESSAGE: Object 'DRF_model_R_1553297204511_743' not found in function: predict for argument: model

我是否知道如何处理这个问题,无论是保存的模型是上传到集群还是其他内容,因为每次构建模型都不是有效的方法。

r h2o
1个回答
1
投票

根据注释而不是使用saveDRS / readRDS保存模型,将模型另存为

h2oModelsaved <- h2o.saveModel(object = h2orf_model, path = "C:/User/Models/") 

重新呼叫模型

h2o.init()
h2oModelLoaded <- h2o.loadModel(h2oModelsaved)

将测试数据转换为h2o Frame

newdata <- as.h2o(testdata)

然后调用预测

pred_h2orf2 <- predict(h2oModelLoaded, newdata = newdata)

这很完美

© www.soinside.com 2019 - 2024. All rights reserved.