GBM和Caret包:无效的间隔数

时间:2015-02-20 19:48:39

标签: r r-caret gbm

虽然我定义了target <- factor(train$target, levels = c(0, 1)),但下面给出的代码提供了此错误:

  

cut.default中的错误(y,唯一(分位数(y,probs = seq(0,1,length =)   cut))),:无效的间隔数此外:警告   消息:1:在train.default(x,y,weights = w,...):cannnot   计算回归的概率

这是什么意思以及如何解决这个问题?

  gbmGrid <- expand.grid(n.trees = (1:30)*10, 
                         interaction.depth = c(1, 5, 9), 
                         shrinkage = 0.1)

  fitControl <- trainControl(method = "repeatedcv", 
                             number = 5, 
                             repeats = 5, 
                             verboseIter = FALSE, 
                             returnResamp = "all",
                             classProbs = TRUE)

  target <- factor(train$target, levels = c(0, 1)) 

  gbm <- caret::train(target ~ .,
                      data = train,
                      #distribution="gaussian",
                      method = "gbm",
                      trControl = fitControl,
                      tuneGrid = gbmGrid)

  prob = predict(gbm, newdata=testing, type='prob')[,2]

1 个答案:

答案 0 :(得分:1)

首先,不要这样做:

 target <- factor(train$target, levels = c(0, 1)) 

你会收到警告:

  

至少有一个类级别不是有效的R变量名称;如果生成类概率,这可能会导致错误,因为变量名称将转换为:X0,X1

其次,您创建了一个名为target的对象。使用公式方法意味着train将在数据框target中使用名为train的列,这些列是不同的数据。修改列。