我想使用R包'caretEnsemble'中的'caretList'函数创建一个集成模型
当我在整体代码中包含代码na.action = na.pass时,我得到了错误
"Error in as.vector(x, "character") :
cannot coerce type 'closure' to vector of type 'character'"
据我了解,当您尝试使用R函数作为对象时,会发生此错误。但是我的代码看起来正确,并且我使用相同的代码成功地在R包“插入符”中训练了单独的模型
如果我排除na.action = na.pass,则会收到错误消息
"Error in na.fail.default(list(y = c(2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,: missing values in object"
如果在排除了所有不完整行(任何观察结果都为na的数据集)上运行模型,则模型将运行。 我的数据集包含19个(所有数字)预测变量,30905行(观测值),其中包含几个na值(某些变量最大为18 000 na)。所以我不想只用完整的行建模。
我的模型代码如下:
set.seed(1269)
mycontrol<- trainControl(
method="repeatedcv", number = 5, repeats = 5,
savePredictions = "final",
classProbs=TRUE,
index = createResample(dat$y,25),
summaryFunction=twoClassSummary
)
model_list <- caretList(
y~., data=dat,
trControl=mycontrol,
na.action = na.pass,
methodList=c("ranger","gbm")
)
我已经检查了数据的结构。预测变量是两类因子,响应变量都是数字或整数。我还使用相同的数据成功地在插入符号中训练了独立模型,所以我怀疑数据是否有问题。
有人对我有可能解决的办法吗?谢谢。
编辑:我在建模之前使用了R包“ DMwR”中的函数“ knnImputation”来估算NA值,而不是将其包括在“预处理”函数/阶段中。现在我的模型正在运行。但是我仍然很想知道为什么会出现这些错误。