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

时间:2017-12-07 13:51:20

标签: r h2o

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

使用nfolds = 5运行任何类型的模型我可以看到web界面中列出的每个CV模型(localhose:54321)看起来像这样:

model_id
model_id_cv_1
model_id_cv_2
model_id_cv_3
model_id_cv_4
model_id_cv_5

我用它来保存它:     h2o.saveModel(model_id,path =" mypath")给出了

但是h2o.saveModel(model_id_cv_1,path =" mypath") 但是当我重新加载它时,我放弃了所有交叉验证的模型。

似乎可以通过网络界面将每个CV模型保存为POJO,但我宁愿能够在R中以编程方式执行此操作。似乎曾经有一个' save_cv'早期版本的h2o.saveModel()中的选项,但似乎已被删除。

这可能吗?

1 个答案:

答案 0 :(得分:0)

当您按照具有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