我无法让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
答案 0 :(得分:3)
哦,我明白了。
显然,在上一个Especies
列中,有是一个因素,而不是字符串的向量。所以,为了改变它,我必须将它分解为:
testdata$Especies <- factor(c("virginica"), levels=c("setosa", "versicolor", "virginica"))
如果我有一个没有最后一列的数据框,我无论如何都必须添加它,因子的级别必须与原始表的因子完全相同,实际内容是无关紧要的。
到目前为止,我不接受我的答案,因为有人可以更好地解释原因。