我正在数据集上运行各种建模算法。通过一次将输入变量建模到我的响应中,我获得了最好的结果,例如:
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
最终只包含对象名称的字符串,“模型”。
环顾四周,我发现了这个问题,这似乎很相关,但我试图弄清楚如何将它应用于我的情况。
我可以创建一个列表,其中包含(我测量的响应)中每个列名的名称,data_resp
然后使用lapply
to use train()
,但我仍然有点坚持如何动态引用新对象名称以保留结果模型。