2017-07-18 3 views
0

Ich möchte meine zufällige Gesamtstruktur mit einer modifizierten Version meines Trainingsdatensatzes ausführen. Meine Trainingsdaten enthalten verschiedene Spalten, einschließlich einer attribute mit Werten von 0-6. Meine Idee war, nur die 0 und hält den Rest mit diesem Stück Code zu löschen:Löschen von Zeilen im Trainingsdatensatz für Zufallswald

training_data4 <- training_data3[!training_data3$attribute == "0", ] 

Allerdings, wenn ich meinen zufälligen Wald mit meinen Trainingsdaten betreiben ich diese Fehlermeldung erhalte:

rf200 <- randomForest(attribute ~ ., data=training_data4, importance=T, 
         proximity=F, ntree=200) 

Fehler in randomForest.default (m, y, ...): haben kann nicht leer Klassen in y

ich es schon wissen muss etwas stimmt nicht mit meinem training_data4, da ich es schon mit meinem ursprünglichen Trainingssatz ausprobiert habe und dieses Problem nicht hatte.

Antwort

4

Ist attribute ein factor (d. H., gibt factor zurück)?

Wenn ja, behält R 0 als Ebene, und Sie werden ausdrücklich droplevels verwenden müssen, um sicherzustellen, 0 ist nicht mehr eine Ebene dieses factor:

training_data4 <- training_data3[!training_data3$attribute == "0", ] 
training_data4$attribute <- droplevels(training_data4$attribute) 

Beispiel:

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

Vielen Dank für Ihre Hilfe, es hat gut mit dem Droplevel funktioniert. – JCra

Verwandte Themen