r - 根据插入符号 R 中的模型选择 tuneGrid
问题描述
我尝试使用“knn”和“rpart”算法在 iris 数据集上应用 ML。这是我的代码:
library(tidyverse)
library(caret)
dataset <- iris
tt_index <- createDataPartition(dataset$Sepal.Length, times = 1, p = 0.9, list = FALSE)
train_set <- dataset[tt_index, ]
test_set <- dataset[-tt_index, ]
models <- c("knn","rpart")
fits <- lapply(models, function(model){
print(model)
train(Species ~ .,
data = train_set,
tuneGrid = case_when(model == "knn" ~ data.frame(k = seq(3,50,1)),
model == "rpart" ~ data.frame(cp = seq(0,0.1,len = 50))),
method = model)
})
我想根据 lapply 中的模型设置 tuneGrid 参数。但我收到此错误:
Error in `[.data.frame`(value[[1]], rep(NA_integer_, m)) :
undefined columns selected
任何帮助将不胜感激。
解决方案
我们可以使用if/else
library(caret)
out <- lapply(models, function(model)
train(Species ~ ., data = train_set,
tuneGrid = if(model == "knn") data.frame(k = seq(3,50,1)) else
data.frame(cp = seq(0,0.1,len = 50)), method = model))
根据?case_when
长度为 1 或 n 的向量,与逻辑输入或输出向量的长度匹配,与第一个 RHS 的类型(和属性)相匹配。不一致的长度或类型将产生错误。
推荐阅读
- aws-glue - AWS Glue Crawler 不同的数据类型
- testing - 有什么方法可以通过 UFT 在 SAP 屏幕上捕获消息
- ios - UITableView 不显示 UITableViewCells
- r - 使用 adonis 进行 PERMANOVA 时如何获得系数输出?
- javascript - 复选框不会从 keydown 事件更改选中的值,但仍然能够聚焦并切换到下一个元素
- c# - 在 C# 中使用空数据类型初始化列表
- typescript - Make package available in Vue with Typescript
- r - 在 Rmarkdown 中的 bash 中设置环境变量
- c - 如何通过引用函数将全局结构指针作为调用传递?
- sql - COUNT 返回所有行的数量,即使是用 except 排除的行