在R adabag设置装袋

时间:2012-01-24 06:55:22

标签: r machine-learning

我无法让adabag的{​​{1}}和bagging工作。

predict.bagging手册页中,有以下内容:

predict.bagging

这很好,很有效。但是,当我稍微更改 library(adabag) library(rpart) data(iris) names(iris)<-c("LS","AS","LP","AP","Especies") sub <- c(sample(1:50, 25), sample(51:100, 25), sample(101:150, 25)) iris.bagging <- bagging(Especies ~ ., data=iris[sub,], mfinal=10) iris.predbagging<- predict.bagging(iris.bagging, newdata=iris[-sub,]) iris.predbagging 中的newdata时,它就会停止工作。

主要是,我无法真正删除或更改predict.bagging列,这很奇怪,因为那个是我应该预测的那个!一个例子。

Especies

....这很好用,几乎就是这个例子的副本。但是,这会产生错误

testdata <- iris[-sub, ]
result <- predict.bagging(iris.bagging, newdata=testdata)

但也是这个

testdata <- iris[-sub, -5] #this deletes the Especies column!
result <- predict.bagging(iris.bagging, newdata=testdata)

产生错误!

发生了什么事?我想使用testdata <- iris[-sub, ] testdata$Especies <- c("virginica") #sets up everything as virginica result <- predict.bagging(iris.bagging, newdata=testdata) 创建一个分类器,但我不能提前知道结果,这就失败了。

编辑:好吧,它甚至变得怪异。

bagging

1 个答案:

答案 0 :(得分:3)

哦,我明白了。

显然,在上一个Especies列中,是一个因素,而不是字符串的向量。所以,为了改变它,我必须将它分解为:

testdata$Especies <- factor(c("virginica"), levels=c("setosa", "versicolor", "virginica"))

如果我有一个没有最后一列的数据框,我无论如何都必须添加它,因子的级别必须与原始表的因子完全相同,实际内容是无关紧要的。

到目前为止,我不接受我的答案,因为有人可以更好地解释原因。