R 中的蒙特卡洛交叉验证编码问题 - Auto MPG 数据集

Monte Carlo Cross Validation coding problem in R - Auto MPG dataset

提问人:SH Ryu 提问时间:9/29/2023 更新时间:9/29/2023 访问量:25

问:

我只是在使用 Auto MPG 数据集在 R 中练习蒙特卡洛交叉验证编码问题。

在练习分类工具后,我只想应用交叉验证,设置 B = 100。 但是,我只是被 R 代码中的一些编码错误阻止了,如下所示;

均值误差(predict(mod1.简历,Auto_test。CV) != Auto_test。CV$mpg01) : 不能强制“list”对象键入“integer”

警告:较长的物体长度不是较短物体长度的倍数警告:较长的物体长度不是较短物体长度的倍数[1]

请让我知道在哪里可以正确更改代码。谢谢!

full = rbind(Auto_train, Auto_test)
n1 = 274
set.seed(123)
n = dim(full[1])
B = 100
TEALL = NULL

for (b in 1:B){
  flag <- sort(sample(1:n,n1))
  Auto_train.CV <- full[flag,]
  Auto_test.CV <- full[-flag,]
  CV.test.err <- NULL
  
  mod1.CV <- lda(mpg01 ~ cylinders + displacement + horsepower + weight, data = Auto_train.CV)
  pred1.CV <- predict(mod1.CV, Auto_train.CV)$class
  CV.test.err <- cbind(CV.test.err, mean(predict(mod1.CV, Auto_test.CV) != Auto_test.CV$mpg01))
  
  mod2.CV <- qda(mpg01 ~ cylinders + displacement + horsepower + weight, data = Auto_train.CV)
  pred2.CV <- predict(mod2.CV, Auto_train.CV)$class
  CV.test.err <- cbind(CV.test.err, mean(predict(mod2.CV, Auto_test.CV) != Auto_test.CV$mpg01))
  
  mod3.CV <- naiveBayes(mpg01 ~ cylinders + displacement + horsepower + weight, data = Auto_train.CV)
  pred3.CV <- predict(mod3.CV, Auto_train.CV)
  CV.test.err <- cbind(CV.test.err, mean(predict(mod3.CV, Auto_test.CV) != Auto_test.CV$mpg01))

  mod4.CV <- multinom(mpg01 ~ cylinders + displacement + horsepower + weight, data = Auto_train.CV)
  pred4.CV <- predict(mod4.CV, Auto_train.CV)
  CV.test.err <- cbind(CV.test.err, mean(predict(mod4.CV, Auto_test.CV) != Auto_test.CV$mpg01))
 
  train.X.CV <- cbind(Auto_train.CV$cylinders, Auto_train.CV$displacement, Auto_train.CV$horsepower, Auto_train.CV$weight)
  test.X.CV <- cbind(Auto_test.CV$cylinders, Auto_test.CV$displacement, Auto_test.CV$horsepower, Auto_test.CV$weight)
  mod5.CV <- knn(train.X.CV, test.X.CV, Auto_train.CV$mpg01, k = 4)
  CV.test.err <- cbind(CV.test.err, mean(mod5.CV != Auto_test.CV$mpg01))
  
}

TEALL = rbind(TEALL, CV.test.err))
R 错误处理 交叉验证

评论

1赞 mikebader 9/29/2023
欢迎!该函数因您创建的模型而异。您似乎正在尝试使用数据集中的现有值来预测数据。通常,您将在 的参数中定义这些值。predict()Auto_train.CVnewdatapredict()

答: 暂无答案