我目前正在对我的一个数据集进行回归分析,并认为为了比较不同的回归模型,我可以使用表格。我希望表格在第一列中有模型的名称,在第二列中有 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)
或类似的东西。这可能是错误的,但我希望你能明白我对那句话的意思。
最佳答案
使用多个模型时,我更喜欢使用带有列表列的数据框
例子:
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()
最后一行给出了数据帧中两个模型的所有预测值。这可以很容易地更改为仅给出一个预测的值。
关于r - 如何使用模型名称和变量列表来计算表及其预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57767226/