在R中保存并加载所有h2o交叉验证模型

在R中保存并加载所有h2o交叉验证模型,r,h2o,R,H2o,我试图找到一种简单的方法来保存h2o使用R生成的所有交叉验证模型。 运行Nfold=5的任何类型的模型时,我可以看到web界面(localhose:54321)中列出的每个CV模型的外观如下: model_id model_id_cv_1 model_id_cv_2 model_id_cv_3 model_id_cv_4 model_id_cv_5 我用这个来保存它: saveModel(model_id,path=“mypath”)给出 但是h2o.saveModel(model\u id

我试图找到一种简单的方法来保存h2o使用R生成的所有交叉验证模型。

运行Nfold=5的任何类型的模型时,我可以看到web界面(localhose:54321)中列出的每个CV模型的外观如下:

model_id
model_id_cv_1
model_id_cv_2
model_id_cv_3
model_id_cv_4
model_id_cv_5
我用这个来保存它: saveModel(model_id,path=“mypath”)给出

但是h2o.saveModel(model\u id\u cv\u 1,path=“mypath”) 但当我重新加载它时,我丢失了所有交叉验证的模型

似乎可以通过webinterface将每个CV模型保存为POJO,但我更希望能够在R中通过编程实现。在h2o.saveModel()的早期版本中,似乎曾经有一个“save_CV”选项,但这个选项似乎已被删除

这可能吗?

按具有CV配置的主模型ID保存模型时,保存的模型中确实包含所有交叉验证的模型。如果您将单个交叉验证模型保存在磁盘上,则它们都将被视为单个模型,并且您不会同时看到它们

以下是一个例子:

让我们以5倍的倍数构建GBM模型:

prostate_df  = h2o.importFile("https://raw.githubusercontent.com/Avkash/mldl/master/data/prostate.csv")
response = "CAPSULE"
features = setdiff(h2o.colnames(prostate_df), response)
prostate_gbm_cv5_model = h2o.gbm(x = features, y = response, training_frame = prostate_df, nfolds = 5)
您可以从此对象获取所有模型:

h2o.cross_validation_models(prostate_gbm_cv5_model)
您可以访问各个CV模型,如下所示:

h2o.cross_validation_models(prostate_gbm_cv5_model][[1]]
h2o.cross_validation_models(prostate_gbm_cv5_model)[[1]]@model_id
您将在此处获得交叉折叠模型总数:

length(h2o.cross_validation_models(prostate_gbm_cv5_model))
让我们将模型保存到磁盘:

h2o.saveModel(object = prostate_gbm_cv5_model, path = "/Users/avkashchauhan/Downloads")
允许从磁盘加载模型:

model_from_disk = h2o.loadModel("/Users/avkashchauhan/Downloads/GBM_model_R_1512067532473_2966")
您将在此处获得所有CV模型:

h2o.cross_validation_models(model_from_disk)
获取CV模型计数:

length(h2o.cross_validation_models(model_from_disk))
单独访问CV模型:

h2o.cross_validation_models(model_from_disk)[[1]]
h2o.cross_validation_models(model_from_disk)[[1]]@model_id