【发布时间】:2020-06-03 21:25:15
【问题描述】:
我知道GBM: Object 'p' not found的问题;但是它没有包含足够的信息来让堆栈回答。我不相信这是重复的,因为我遵循了这个问题中指出的内容和链接的重复Error in R gbm function when cv.folds > 0,它没有描述相同的错误。
我已确保遵循删除模型中未使用的任何列的建议。
cv.folds 大于 0 时出现此错误:
object 'p' not found
据我所见,将cv.folds 设置为 0 不会产生有意义的输出。我尝试了不同的分布、分数、树等。我确信我已经错误地参数化了某些东西,但我不能一辈子我看看它是什么。
模型和输出:
model_output <- gbm(formula = ign ~ . ,
distribution = "bernoulli",
var.monotone = rep(0,9),
data = model_sample,
train.fraction = 0.50,
n.cores = 1,
n.trees = 150,
cv.folds = 1,
keep.data = T,
verbose=T)
Iter TrainDeviance ValidDeviance StepSize Improve
1 nan nan 0.1000 nan
2 nan nan 0.1000 nan
3 nan nan 0.1000 nan
4 nan nan 0.1000 nan
5 nan nan 0.1000 nan
6 nan nan 0.1000 nan
7 nan nan 0.1000 nan
8 nan nan 0.1000 nan
9 nan nan 0.1000 nan
10 nan nan 0.1000 nan
20 nan nan 0.1000 nan
40 nan nan 0.1000 nan
60 nan nan 0.1000 nan
80 nan nan 0.1000 nan
100 nan nan 0.1000 nan
120 nan nan 0.1000 nan
140 nan nan 0.1000 nan
150 nan nan 0.1000 nan
这里曾经是产生错误的最小数据,但是一旦使用@StupidWolf 的建议,它太小了,下面的建议将通过初始错误。后续错误正在发生,解决方案将在发现后在此处发布。
【问题讨论】:
-
您的数据中没有零个数。 ign 列中只有 1....请看,100 条记录 ign 列的所有值都为 1
-
嗯,我从没见过 gbm 出现这种错误。你介意以某种方式共享数据吗?我尝试使用您的示例,并将 ign 列随机化为 0,1s 并且运行正常。
-
PKumar 和 StupidWolf,感谢您的输入,我已经更新了数据以包含一些真正的 0,它现在是一个平衡的数据集,在此道歉。 StupidWolf,我很好奇你最终是如何让它运行的。我已经确保我现在有 0,但我仍然遇到错误。
-
我想知道您是否需要缩放预测变量。你有一个非常小的。
-
@Badger,你需要设置 cv.folds > 1 。解释见下文