我想用我的训练数据集的修改版本运行我的随机森林。我的训练数据包含不同的列,其中一列名为attribute
,值为0-6。我的想法是只删除0
并使用这段代码保留其余部分:
training_data4 <- training_data3[!training_data3$attribute == "0", ]
但是,当我使用我的训练数据运行我的随机森林时,我收到此错误消息:
rf200 <- randomForest(attribute ~ ., data=training_data4, importance=T,
proximity=F, ntree=200 )
randomForest.default(m,y,...)中的错误:不能有空类 ÿ
我已经知道我的training_data4
一定有问题,因为我已经使用我原来的训练集进行了尝试,但这并没有出现这个问题。
答案 0 :(得分:4)
attribute
是factor
(即class(training_data3$attribute)
还是factor
)?
如果是这样,R会将0
保留为某个级别,您必须明确使用droplevels
以确保0
不再是factor
的级别:
training_data4 <- training_data3[!training_data3$attribute == "0", ]
training_data4$attribute <- droplevels(training_data4$attribute)
示例:
test <- factor(c(1,1,1,2,2,2,3,3,3), levels=c("0", "1", "2", "3"))
test
[1] 1 1 1 2 2 2 3 3 3
Levels: 0 1 2 3
test <- droplevels(test)
test
[1] 1 1 1 2 2 2 3 3 3
Levels: 1 2 3