【问题标题】:5 fold Cross-validation5折交叉验证
【发布时间】:2020-07-12 01:19:27
【问题描述】:

我已使用此代码对 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, : 对象中的缺失值) 中的错误

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

【问题讨论】:

  • 请不要设置等于lm的对象。 lm 是用于拟合线性模型的保留名称。而是使用LM 或fit_lm 或类似的东西。 trainControl 也一样。

标签: r cross-validation r-caret


【解决方案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")]

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 2011-11-29
    • 2020-08-29
    • 1970-01-01
    • 2020-02-10
    • 2016-02-23
    • 2012-05-11
    • 2021-06-03
    • 2020-10-24
    相关资源
    最近更新 更多