5折交叉验证

时间:2020-03-31 13:14:07

标签: r cross-validation r-caret

我已使用此代码对在carData库中找到的Davis数据集执行了5折交叉验证。

install.packages("caret")
library(caret)
trainControl<-trainControl(method="cv",number=5)
lm<-train(weight~height+repht+repwt,Davis,method="lm",trControl=trainControl)
lm

运行此命令,我得到一个错误,指出重量缺少值。 这是错误消息:

na.fail.default(list(weight = c(77L,58L,53L,68L,59L,76L,:缺少对象值

对于如何解决此问题的任何建议,我将不胜感激。预先感谢!

1 个答案:

答案 0 :(得分:1)

您的预测变量中缺少错误,例如:

library(caret)
data = mtcars
data$mpg[c(3,6,9)]<-NA
trainControl<-trainControl(method="cv",number=5)
fit<-train(mpg~cyl+hp,data,method="lm",trControl=trainControl)

Error in na.fail.default(list(mpg = c(21, 21, NA, 21.4, 18.7, NA, 14.3,  : 
  missing values in object

使用complete.cases获取包含完整观测值的数据

complete.obs = complete.cases(data[,c("mpg","cyl","hp")])
data = data[complete.obs,]
fit<-train(mpg~cyl+hp,data,method="lm",trControl=trainControl)

您的情况应该是:

complete.obs = Davis[,c("weight","height","repht","repwt")]