我从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")
还有其他解决办法吗?
答案 0 :(得分:1)
在致电traindf
时,将data=traindf
更改为gbm
。您需要命名参数,因为函数中的第二个位置参数实际上是distribution
。
您也可以将公式更改为as.formula("myTarget ~ Param1 + Param2 + Param3")
(虽然这不是错误的原因)。
答案 1 :(得分:1)
这可能有效:
gbm_formula <- as.formula(paste0("myTarget~",paste0("Param",1:3,collapse="+")))
>gbm_formula
myTarget ~ Param1 + Param2 + Param3