2017-07-18 168 views
0

我想運行隨我的訓練數據集的修改版本的隨機森林。我的訓練數據包含不同的欄,其中一欄名爲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出了問題,因爲我已經用我的原始訓練集嘗試過了,並且沒有這個問題。

回答

4

attribute a 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 
+0

非常感謝您的幫助,它可以很好地處理水滴。 – JCra