如何使用模型名称和变量列表来计算带有预测的表?

时间:2019-09-03 07:49:54

标签: r regression

我目前正在对我的数据集进行回归分析,并认为为了比较不同的回归模型,我可以使用表格。我希望该表在第一列中包含模型名称,在第二列中包含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)

或类似的东西。这可能是错误的,但是我希望您能理解我所说的意思。

1 个答案:

答案 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()

最后一行给出了数据框中两个模型的所有预测值。可以很容易地将其更改为仅提供一个预测的值。