使用 caret 包训练多个模型时出错

Error in Training Multiple Models using caret package

我在使用 R 中的 caret 包时遇到了一个非常令人困惑的问题。为了进行比较,我正在训练多个模型。几次调用训练后,此错误消息开始显示我使用的哪个训练调用/训练模型:-

Error in UseMethod("train") : no applicable method for 'train' applied to an object of class "formula"

一旦出现这个错误,没有训练其他模型,而是出现上面的错误。

当我重新启动 R 并再次加载 caret 包时,出现此错误的相同模型很容易训练。

我对这里的问题似乎很困惑?

我已经为我尝试创建的 5 个训练模型创建了一个函数:-

test = function(){

a = train(demand ~ temp, oldData, 'lm')
print("Done A")

b = train(demand ~ temp, oldData, 'rf', ntree = 10)
print("Done B")

c = train(demand ~ temp, data = oldData, method = "gbm", 
        trControl = objControl, tuneGrid = gbmGrid, verbose = F)
print("Done C")

d = train(demand ~ temp, oldData, 'mlp')
print("Done D")

e = train(demand ~ temp, oldData, 'monmlp')
print("Done E")
}

P.S:虽然我已经成功训练了所有这些模型,但我正在尝试创建一个集成函数,我打算为此 运行 所有这些调用。

我发现了问题所在:-

唯一给 "mlp" 模型带来麻烦的模型。当我们调用 train 来使用 "mlp" 方法时,caret 附加了 2 个包,它们是 "RSNNS" 和 "Rcpp"。我的猜测是这些包取决于我们使用 train 函数提供的信息。一旦它们被附加,该信息就会被保留,这会导致 * 上述错误,之后无法训练其他模型。如果我们在再次调用训练之前分离这两个包,则模型训练成功。