GBM 和 Caret 包:无效的间隔数

GBM and Caret package: invalid number of intervals

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

Error in cut.default(y, unique(quantile(y, probs = seq(0, 1, length = cuts))), : invalid number of intervals In addition: Warning messages: 1: In train.default(x, y, weights = w, ...) : cannnot compute class probabilities for regression

这是什么意思,如何解决?

  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]

首先,不要这样做:

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

您将收到警告:

At least one of the class levels are not valid R variables names; This may cause errors if class probabilities are generated because the variables names will be converted to: X0, X1

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