Wenn die Ausgabe von randomForest
zu verwenden versuchen, neue Daten zu klassifizieren (oder sogar die ursprünglichen Trainingsdaten), erhalte ich folgende Fehlermeldung:New Faktorstufe nicht in den Trainingsdaten
> res.rf5 <- predict(model.rf5, train.rf5)
Error in predict.randomForest(model.rf5, train.rf5) :
New factor levels not present in the training data
Was diesen Fehler macht bedeuten? Warum tritt dieser Fehler auf, auch wenn ich versuche, dieselben Daten vorherzusagen, die ich trainiert habe?
Ein kleines Beispiel, das verwendet werden kann, um den Fehler zu reproduzieren, ist unten.
train.rf5 <- structure(
list(A = structure(c(2L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 3L),
.Label = c("(-0.1,19.9]", "(19.9,40]", "(80.1,100]"),
class = c("ordered", "factor")),
B = structure(c(3L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 4L),
.Label = c("1", "2", "4", "5"),
class = c("ordered", "factor")),
C = structure(c(1L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L),
.Label = c("FALSE", "TRUE"),
class = "factor")),
.Names = c("A", "B", "C"),
row.names = c(7L, 8L, 10L, 11L, 13L, 15L, 16L, 17L, 18L, 19L),
class = "data.frame")
# A B C
# 7 (19.9,40] 4 FALSE
# 8 (-0.1,19.9] 1 FALSE
# 10 (-0.1,19.9] 1 TRUE
# 11 (-0.1,19.9] 1 FALSE
# 13 (-0.1,19.9] 1 FALSE
# 15 (-0.1,19.9] 1 TRUE
# 16 (80.1,100] 2 TRUE
# 17 (-0.1,19.9] 1 FALSE
# 18 (-0.1,19.9] 1 FALSE
# 19 (80.1,100] 5 TRUE
require(randomForest)
model.rf5 <- randomForest(C ~ ., data = train.rf5)
res.rf5 <- predict(model.rf5, train.rf5) # Causes error
Ich sehe einige möglicherweise damit verbundene Fragen auf SO, aber ich glaube nicht, dass sie
- lösen dropping factor levels in a subsetted data frame in R
- Random forest package in R shows error during prediction() if there are new factor levels present in test data. Is there any way to avoid this error?
Im Gegensatz zu 1), das tue ich mein Problem direkt haben keine Faktorstufen, die nicht in den Daten dargestellt sind, und im Gegensatz zu 2) sind die Faktorstufen in meinen Zug- und Testdaten identisch.
Edit: Zusätzliche Informationen:
sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] randomForest_4.6-7
loaded via a namespace (and not attached):
[1] tools_3.0.1
Ich wette, es hat etwas mit den geordneten Faktoren zu tun. –