首页 > 解决方案 > 交叉验证:formula.character(object, env = baseenv()) 中的错误:公式无效

问题描述

我正在尝试进行交叉验证,以查看 5 个蘑菇特征中的哪个模型最能预测蘑菇是可食用的还是有毒的。我正在尝试使用该allCombs函数将所有可能的组合循环到蘑菇特征。

这是我得到的错误:

Error in formula.character(object, env = baseenv()) : 
    invalid formula c("CapShape", "0", "0", "0", "0"): 
         not a call

任何关于我哪里出错的帮助将不胜感激,我的代码如下:

idx <- sample(nrow(mushroom_data), 4062) #50:50 split between sets.

train_data_mushroom <- mushroom_data[idx, ]; test_data_mushroom <- mushroom_data[-idx, ]

#all possible models we want to consider
combs <- allCombs(1:5)
combs <- allCombs(c("CapShape", "CapSurface", "CapColor", "Odor", "Height")) #mushroom features
combs=combs[-1 ,]
combs[is.na(combs)] <- 0

predictiveloglikelihood3 <- rep(NA, nrow(combs))
for (i in 1:nrow(combs)){
  paste("Edible ~", paste(combs[i, 1:5], collapse="+"))
  
current_model <- glm(formula = combs[i, 1:5], data=train_data_mushroom)

sigma <- sqrt(summary(current_model)$dispersion)

ypredict_mean <- predict(current_model, test_data_mushroom)

  predictiveloglikelihood3[i] <- sum(dnorm(test_data_mushroom$Edible, ypredict_mean, sigma, log=TRUE))

}

标签: rformulacross-validation

解决方案


推荐阅读