Entscheidungsbaum mit rpart()
Verfasst: Do Nov 30, 2017 3:14 pm
Hallo,
ich versuche gerade meine Daten/Ergebnisse mit einem decision tree zu analysieren und ich bekomme es zwar mit einem Beispieldatensatz hin (viele nutzen immer das Titanic-Beispiel), aber nicht mit meinen Daten. Ich denke, es hat etwas mit dem Format meiner Daten zu tun. Komischerweise macht der erste Code einen interessanten tree mit entsprechenden leafs, aber der zweite nicht. Der einzige Unterschied ist die abhängige Variable:
Hierbei ist results jeweils 1 oder 0 und results_word jeweils „Ja“ oder „Nein“ (is.factor(results) ist False und is.factor(results_Word) ist True). Dens ist eine Zahl – die Bevölkerungsdichte. Wenn ich method ="class" zufüge, bringt auch der erste tree keine Trennung mehr. Wieso ist das so?
Dann will ich natürlich auch meinen tree, also meinen full_tree der mir Ergebnisse geliefert hatte, der Trainings-Daten (full_tree) mit den restlichen Test-Daten vergleichen. Dafür nutze ich wie viele predict().
Aber hier bekomme ich folgende Fehlermeldung:
In der Hilfe wird geschrieben: "The predictors referred to in the right side of formula(object) must be present by name in newdata. If missing, the fitted values are returned." Der Datensatz ist ja nur geteilt, z.B. 30 zu 70, also sind alle Eigenschaften gleich (columns etc.) Das kann es also nicht sein, oder? https://stat.ethz.ch/R-manual/R-devel/l ... rpart.html
Ich komme nicht dahinter?
Ich freue mich über Eure Erfahrungen.
Beste Grüße
ich versuche gerade meine Daten/Ergebnisse mit einem decision tree zu analysieren und ich bekomme es zwar mit einem Beispieldatensatz hin (viele nutzen immer das Titanic-Beispiel), aber nicht mit meinen Daten. Ich denke, es hat etwas mit dem Format meiner Daten zu tun. Komischerweise macht der erste Code einen interessanten tree mit entsprechenden leafs, aber der zweite nicht. Der einzige Unterschied ist die abhängige Variable:
Code: Alles auswählen
full_tree = rpart(results ~ Dens,
data = data_tree,[data_tree_training,],
control=rpart.control(minsplit = 100, # atleast X in one node
cp = 0.0, # puninge or unpruned
xval = 0)) # without cross validation
rpart.plot(full_tree)
full_tree = rpart(results_word ~ Dens,
data = data_tree,[data_tree_training,],
control=rpart.control(minsplit = 100, # atleast X in one node
cp = 0.0, # puninge or unpruned
xval = 0)) # without cross validation
rpart.plot(full_tree)
Dann will ich natürlich auch meinen tree, also meinen full_tree der mir Ergebnisse geliefert hatte, der Trainings-Daten (full_tree) mit den restlichen Test-Daten vergleichen. Dafür nutze ich wie viele predict().
Code: Alles auswählen
prediction = predict(full_tree, data_tree,[data_tree_test,], type = "class")
Code: Alles auswählen
Error in predict.rpart(full_tree, data_tree,[data_tree_test,], type = "class") :
Invalid prediction for "rpart" object
Ich komme nicht dahinter?
Ich freue mich über Eure Erfahrungen.
Beste Grüße