2016-06-07 8 views
0

Ich versuche, einen Klassifikationsbaum in R mithilfe des Paketbaums zu erstellen. Klassifizierungsbaum in R-Limit auf 32 Ebenen

Dies ist ein Auszug des Datensatzes ich verwende (Header enthalten):

CENTRO_EXAMEN,NOMBRE_AUTOESCUELA,MES,TIPO_EXAMEN,NOMBRE_PERMISO,PROB 
Alcal· de Henares,17APTOV,5,PRUEBA DESTREZA,A2 ,0 
Alcal· de Henares,17APTOV,5,PRUEBA CONDUCCION Y CIRCULACION,B ,0.8 
Alcal· de Henares,17APTOV,5,PRUEBA TEORICA,B ,0.333333333 
Alcal· de Henares,2000,5,PRUEBA TEORICA,B ,0 

und dies ist die Befehle I bis R bin ausgeben:

madrid=read.csv("madrid.csv",header=T,na.strings="?") 
#madrid=na.omit(madrid) 
names(madrid) 
dim(madrid) 
fix(madrid) 
library(tree) 
attach(madrid) 

#costruisce albero 
High=ifelse(PROB<=0.5,"No","Yes") 
madrid=data.frame(madrid,High) 
tree.madrid=tree(High~CENTRO_EXAMEN+NOMBRE_AUTOESCUELA+MES+TIPO_EXAMEN+NOMBRE_PERMISO,madrid) 
summary(tree.madrid) 
plot(tree.madrid) 
text(tree.madrid,pretty=0) 
tree.madrid 

R gibt folgende Fehler nach Ausgabe von tree.madrid

Error in tree(High ~ CENTRO_EXAMEN + NOMBRE_AUTOESCUELA + MES + TIPO_EXAMEN + : 
    factor predictors must have at most 32 levels 

Irgendeine Idee warum?

+0

Könnte es ein Problem mit den Akzenten im Text sein? – user3161330

Antwort

1

Im Grunde wird es rechenintensiv, so viele Splits in Ihren Daten zu erstellen, da Sie die beste Aufteilung aller 2^32 (ungefähr) möglichen Splits auswählen.

Wenn Sie in der Lage sind, eine zufällige Gesamtstruktur zu verwenden, schlägt Bens Kommentar here vor, dass die randomForest jetzt mit bis zu 53 Ebenen umgehen kann. Wenn Sie aus irgendeinem Grund keine zufällige Gesamtstruktur verwenden können, können Sie die Ebenen Ihres kategorialen Prädiktors reduzieren.

+0

Ich kann randomForest verwenden und ich habe versucht, anscheinend meine Datased produziert mehr als 53 kategorische Prädiktoren. Warum ist es Ihrer Meinung nach so? Liegt es an der Anzahl der verschiedenen Werte, die jede Variable haben kann? – user3161330

+0

@ user3161330 Genau. Wenn Sie eine kategoriale Variable haben, ist eine Ebene ein eindeutiger Wert. Wenn Sie 'length (levels (data $ factor_variable))' es gibt zurück, wie viele Ebenen in Ihrer Variablen sind. Dies funktioniert jedoch nur für Faktoren, wenn Sie die Anzahl der verschiedenen Zeichenwerte haben möchten, die Sie tun könnten 'length (unique (data $ character_variable))' – ZachTurn

+0

Jetzt sehe ich ... Irgendeine Idee, was könnte ich tun? Ich weiß, dass Sie keinen Einblick in den Datensatz haben, aber gibt es eine übliche Technik, um ... die Anzahl der Werte zu reduzieren? Einfach die Variable mit zu vielen Werten loswerden? – user3161330