删除随机森林的训练数据集中的行

时间:2017-07-18 15:18:23

标签: r random-forest

我想用我的训练数据集的修改版本运行我的随机森林。我的训练数据包含不同的列,其中一列名为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一定有问题,因为我已经使用我原来的训练集进行了尝试,但这并没有出现这个问题。

1 个答案:

答案 0 :(得分:4)

attributefactor(即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