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

4
我在使用R中的caret包时遇到了一个非常令人困惑的问题。为了进行比较,我正在训练多个模型。在调用train几次之后,无论我使用哪个train调用/训练模型,都会出现以下错误信息:
错误: 在类“formula”的对象上没有应用于“train”的适用方法
一旦出现这个错误,就不会训练其他模型,而是会出现以上错误。
当我重新启动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")
}

尽管我已经成功训练了所有这些模型,但我正在尝试创建一个集成函数,以便将所有这些调用一起运行。

如果你说当你重新启动R并加载caret时,所有的模型都能够成功训练,那么你的问题是什么?你能否重现这个问题? - desertnaut
我已经成功地一个接一个地训练了所有的模型:训练一个模型,然后重新启动 R,再训练下一个模型。我想在单个 R 会话中训练所有的模型! - Abdul Basit Khan
1个回答

3
我找到了问题所在:
唯一造成问题的模型是“mlp”模型。当我们使用“mlp”方法调用train时,caret会附加两个包,它们是“RSNNS”和“Rcpp”。我猜想这些包依赖于我们使用train函数提供的信息。一旦它们被连接,该信息就被保留下来,这导致上述错误出现,之后无法训练其他模型。如果在再次调用train之前卸载这两个包,那么模型就可以成功训练。

1
非常感激这个,万分感谢。因为同样的问题我快要疯了,一切似乎都能工作,但前一天什么也没做,我尝试了所有方法。虽然没有达到交付期限,但很高兴问题得到解决并知道有一种方法。 - Juano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接