r - 如何在循环中训练多个模型

标签 r for-loop machine-learning subset r-caret

我想使用 caret 包(每个对应 7 个响应变量)在 for 循环内训练多个模型。

我的 data.frame data 有 46 个预测变量(全部用于训练所有模型)和 7 个响应。

我尝试过一些 Rcode 但失败了:

models.list = list()
Ynames = names(data)[47:ncol(data)]
for(y in Ynames)
{
models.list[[y]] = train(as.name(y)~., subset(data,select=-Ynames[-y]),method="".....)
}

我的变量Ynames包含所有响应。 每个模型必须使用单个响应变量进行训练。 因此,对于迭代 1,我们将针对 Ynames[1] 响应和所有 46 个预测变量训练模型,但有必要从数据集 data 中排除所有非第一响应变量(Ynames[-1])。

最佳答案

这可能是与您的示例相匹配的替代方案(使用 iris)。子集基于这篇文章:removing a list of columns from a data.frame using subset

models.list = list()
Ynames = names(iris)[3:ncol(iris)]

for(y in Ynames)
{
  to.remove <- Ynames[!Ynames==y]
  `%ni%` <- Negate(`%in%`)
  models.list[[y]] = train(as.name(y)~., subset(iris,select = names(iris) %ni% to.remove),method="".....)
}

关于r - 如何在循环中训练多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43736986/

相关文章:

r - 在 R 中编写自定义函数,该函数采用带单位的输入向量

r - XTS - 如何获取x天前的数据

python - 逐行打印嵌套列表 - Python

for-loop - for循环init语句中的变量声明

python-2.7 - Sklearn GradientBoostingRegressor 中的早期停止

python - 无需修改代码即可获得不同的精度

删除中央白色圆圈?

r - 如何使用 Rayshader R 导出高分辨率图像

java - 将嵌套的 for 循环变成单个 for 循环

machine-learning - 用于射击游戏 AI 研究的 API