首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Adabag boosting函数出错

Adabag boosting函数出错
EN

Stack Overflow用户
提问于 2018-02-13 18:53:06
回答 2查看 583关注 0票数 0
代码语言:javascript
复制
  df1 <- data.frame(ID = c(1, 2, 3, 4, 5),
                  var1 = c('a', 'b', 'c', 'd', 'e'),
                  var2 = c(1, 1, 0, 0, 1))

  ada = boosting(formula=var1~., data=df1)

Error in cbind(yval2, yprob, nodeprob) : 
  el número de filas de las matrices debe coincidir (vea arg 2)

大家好,我正在尝试使用adabag包中的boosting函数,但它告诉我矩阵中的行数(?)必须相等。此数据不是原始数据,但它似乎抛出了相同的错误。

你能帮我一下吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-02-13 19:14:53

您不应该使用ID作为解释变量。

不幸的是,您的df1数据集太小,不可能理解ID是否是问题的根源。

下面我生成一个更大的数据集:

代码语言:javascript
复制
library(adabag)
set.seed(1)
n <- 100
df1 <- data.frame(ID = 1:n,
                  var1 = sample(letters[1:5], n, replace=T),
                  var2 = sample(c(0,1), n, replace=T))
head(df1)
#   ID var1 var2
# 
# 1  1    b    1
# 2  2    b    0
# 3  3    c    0
# 4  4    e    1
# 5  5    b    1
# 6  6    e    0

ada <- boosting(var1~var2, data=df1)

ada.pred <- predict.boosting(ada, newdata=df1)
ada.pred$confusion
# Observed Class Predicted Class  a  b  c  d  e
#               b  5 20  2  7 11
#               c  2  2 10  2  2
#               d  6  3  7 17  4
票数 0
EN

Stack Overflow用户

发布于 2018-04-02 15:21:04

Pablo,如果我们仔细观察你的样本数据,我们会注意到一个属性,使分类算法无法处理。您的数据集由五个样本组成,每个样本都有一个唯一的标签,即因变量: a,b,c,d,e。数据集只有一个特征(即自变量var2,因为ID应从特征列表中排除),由两个类别组成:0和1。这意味着有几个标签(因变量)对应于自变量的同一类别。当算法试图建立一个模型时,在这个过程中,由于前面描述的数据集属性,它遇到了定义回归的问题,并抛出错误(矩阵的行数必须匹配(请参阅arg 2))。

相反,Marco的数据具有一些健康的多样性:在六个样本的数据集中,只有三个标签(b,c,e)和两个类别(0,1)。数据集是多样化和足够可靠的,算法可以处理它。

因此,为了使用adabag的boosting (使用名为rpart的回归树作为控件),您应该使您的数据更加多样化和可靠。祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48765091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档