【问题标题】:GBM and Caret package: invalid number of intervalsGBM 和 Caret 包:间隔数无效
【发布时间】:2015-04-22 14:36:44
【问题描述】:

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

cut.default(y, unique(quantile(y, probs = seq(0, 1, length = cut))), : 无效的间隔数另外:警告 消息:1:在 train.default(x, y, weights = w, ...) 中:不能 计算回归的类别概率

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

  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]

【问题讨论】:

  • train 中的target &lt;- factor(train$target,...) 是什么?
  • 尝试在您的trainControl 函数中添加summaryFunction = twoClassSummary ,看看它是否有效。

标签: r r-caret gbm


【解决方案1】:

首先,不要这样做:

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

你会得到一个警告:

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

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

【讨论】:

    猜你喜欢
    • 2014-02-10
    • 2018-01-05
    • 2013-03-14
    • 2015-06-10
    • 2019-03-20
    • 1970-01-01
    • 2013-08-04
    • 2016-01-22
    • 2020-09-20
    相关资源
    最近更新 更多