我正在对一个数据集运行各种建模算法。通过将我的输入变量逐个与响应建模,我获得了最佳结果,例如:
model <- train(y ~ x1 + x2 + ... + xn, ...)
在我训练好我的模型后,我希望不必每次重新运行它们,因此我一直试图将它们保存为.rda
文件。这里是一个随机森林模型的示例循环(如果有更好的方法,请随意建议!):
# data_resp contains my measured responses, one per column
# data_pred contains my predictors, one per column
for (i in 1:ncol(data_resp)) {
model <- train(data_pred_scale[!is.na(data_resp[, i]), ],
data_resp[!is.na(data_resp[, i]), i],
method = "rf",
tuneGrid = data.frame(.mtry = c(3:6)),
nodesize = 3,
ntrees = 500)
save(model, file = paste("./models/model_rf_", names(data_resp)[i], ".rda", sep = ""))
当我加载这个模型时,它会被称为“model”。 目前我还没有找到一个好的方法来保存相应名称的模型,以便之后可以引用。我发现可以通过以下方式将对象赋值给字符串:
assign(paste("./models/model_rf_", names(data_resp)[i], ".rda", sep = ""), train(...))
但是当我保存对象时,我仍然需要考虑如何引用它:
save(???, file = ...)
我不知道如何用自定义名称调用对象。
最后,即使是加载也出现了问题。我尝试使用
assign("model_name", load("./model.rda"))
,但结果对象名为string
,只是保存了对象名称"model"的字符串。在搜索中,我发现这个问题似乎相关,但我正在努力弄清楚如何将其应用到我的情况。
我可以创建一个列表,其中包含
data_resp
(我的测量响应)中每个列名的名称,然后使用lapply
来使用train()
,但我仍然有点困惑如何动态地引用新对象名称以保留结果模型。
saveRDS
和readRDS
,它会简化很多事情。 - dickoa