【问题标题】:Classification with gbm() - errors使用 gbm() 进行分类 - 错误
【发布时间】:2014-07-22 09:58:33
【问题描述】:
cancer <- read.csv('breast-cancer-wisconsin.data', header = FALSE, na.strings="?")
cancer <- cancer[complete.cases(cancer),]
names(cancer)[11] <- "class"
cancer[, 11] <- factor(cancer[, 11], labels = c("benign", "malignant"))
library(gbm)

首先,我使用 complete.cases 删除“NA”值,并将第 11 列“类”作为因子。我想使用“类”作为响应变量和其他列,除了第一个,作为预测变量。

在我第一次尝试时,我输入了:

boost.cancer <- gbm(class ~ .-V1, data = cancer, distribution = "bernoulli") 

Error in gbm.fit(x, y, offset = offset, distribution = distribution, w = w,  : 
Bernoulli requires the response to be in {0,1}

然后,我使用类的对比而不是类。

boost.cancer <- gbm(contrasts(class) ~ .-V1, distribution = "bernoulli", data = cancer)

Error in model.frame.default(formula = contrasts(class) ~ . - V1, data = cancer,  : 
variable lengths differ (found for 'V1')

如何纠正这些错误?我确定我的方法有问题。

【问题讨论】:

    标签: r gbm


    【解决方案1】:

    你也可以使用:

    boost.cancer

    在“预测”功能和准确确定混淆矩阵时做类似的事情。

    【讨论】:

    【解决方案2】:

    正如错误所说,您的响应不在 [0,1] 中。您可以这样做而不是创建因子:

    > cancer$class <- (cancer$class -2)/2
    
    > boost.cancer <- gbm(class ~ .-V1, data = cancer, distribution = "bernoulli")
    > boost.cancer
    gbm(formula = class ~ . - V1, distribution = "bernoulli", data = cancer)
    A gradient boosted model with bernoulli loss function.
    100 iterations were performed.
    There were 9 predictors of which 4 had non-zero influence.
    

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 2020-10-12
      • 2020-08-09
      • 2013-03-13
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 2014-06-25
      相关资源
      最近更新 更多