【发布时间】:2015-10-19 13:36:09
【问题描述】:
在尝试拟合 gbm 或 rpart 模型时,我多次遇到此错误。最后,我能够使用公开可用的数据始终如一地重现它。我注意到使用 CV(或重复 cv)时会发生此错误。当我不使用任何适合控件时,我不会收到此错误。有人可以解释一下为什么我总是不断出错。
fitControl= trainControl("repeatedcv", repeats=5)
ds = read.csv("http://www.math.smith.edu/r/data/help.csv")
ds$sub = as.factor(ds$substance)
rpartFit1 <- train(homeless ~ female + i1 + sub + sexrisk + mcs + pcs,
tcControl=fitControl,
method = "rpart",
data=ds)
【问题讨论】:
-
根据我的经验,发生此错误是因为某些变量是因子而不是数字。另一种情况可能是变量的位置是字符串。尝试
sapply(your_data, class)来检查列类。 -
感谢您的回复。此数据集和其他显示此错误的数据集具有一些因子类的变量。但为什么这很重要? rpart 不能处理因子变量。为什么使用CV时不起作用?
-
如果数字尝试将它们转换为
numeric,它characters会尝试不将它们包含在模型中。无论如何,这不是一般错误,我认为这取决于methodtrain 使用的内容。不要忘记train不是一个模型,而只是一个简单语法的包装器,只需更改method参数即可应用大量不同的模型。 -
如果您在
train()函数中使用正确的参数名称,此特定错误似乎会消失。它应该是trControl=fitControl,而不是tcControl=fitControl。查看生成的warnings()后,这一点很明显。 -
您好,我已经发布了答案,但已被删除。我是说计算 RMSE 的错误可能来自训练数据集中的无限值。告诉我这是否正确。
标签: r machine-learning r-caret rpart gbm