我目前正在对我的数据集进行回归分析,并认为为了比较不同的回归模型,我可以使用表格。我希望该表在第一列中包含模型名称,在第二列中包含1个测试点的预测值。
我现在所做的工作被系统地命名为以下模型:
library(caret)
model.lm <- train(formula, data=train, method='lm',...)
model.glmnet<- train(formula, data=train, method='glmnet',...)
...
Modelnames <- c('lm', 'glmnet',...)
results <- setNames(as.data.frame(matrix(nrow=n, ncol=2)), c('Model', 'Prediction'))
results$Model <- Modelnames
results$Prediction <- predict(model. , test) (?)
以此类推。
现在,我想知道是否可以使用Modelnames
来快速对每个模型进行预测,而不必手动为每个模型键入predict()
。有什么方法可以将Modelnames
转换为model.
格式?理想情况下,它将是一个单线纸,例如
results$Prediction <- predict(model.results[,1], test)
或类似的东西。这可能是错误的,但是我希望您能理解我所说的意思。
答案 0 :(得分:0)
在使用多个模型时,我更喜欢使用带有列表列的数据框
示例:
require(caret)
require(tidyverse)
dt <- data.frame(method = c('lm', 'glmnet')) %>%
mutate(model = map(method, ~ train(Sepal.Length ~ Petal.Length + Petal.Width,
data = iris,
method = .x))) %>%
mutate(predicted = map(model, predict))
dt %>% select(method,predicted) %>%
unnest()
最后一行给出了数据框中两个模型的所有预测值。可以很容易地将其更改为仅提供一个预测的值。