eval(expr, envir, enclos) 中的错误:找不到对象'Param1'



我从csv读取train_data,然后按如下方式训练GBM模型:

train_rows <- sample(nrow(train_data), round(nrow(train_data) * 0.5))
traindf <- data[train_rows, ]
testdf <- data[-train_rows, ]
gbm_formula <- as.formula("traindf$myTarget ~ Param1 + Param2 + Param3")
gbm_model <- gbm(gbm_formula, 
                 traindf, 
                 distribution = "bernoulli", 
                 n.trees = 200, 
                 bag.fraction = 0.75, 
                 cv.folds = 5, 
                 interaction.depth = 3)

然后我出现以下错误:

Error in eval(expr, envir, enclos) : object 'Param1' not found

我知道的唯一解决方案是指定gbm_formula如下:

gbm_formula <- as.formula("traindf$myTarget ~ traindf$Param1 + traindf$Param2 + traindf$Param3")

有没有其他解决方案可以解决这个问题?

在调用gbm时将traindf更改为data=traindf。您需要命名参数,因为函数中的第二个位置参数实际上是distribution

您还可以将公式更改为as.formula("myTarget ~ Param1 + Param2 + Param3")(尽管这不是错误的原因)。

这可能有效:

gbm_formula <- as.formula(paste0("myTarget~",paste0("Param",1:3,collapse="+")))
>gbm_formula
myTarget ~ Param1 + Param2 + Param3

相关内容

最新更新