Ich bin ein CART-Regressionsbaummodell in R mit Party-Paket erstellen, aber ich habe Fehlermeldung, sagen Ebenen nicht übereinstimmen, wenn ich versuche, das Modell mit Test-Dataset anzuwenden.Entscheidung Tree Party Paket Vorhersagefehler - Ebenen stimmen nicht überein
Ich habe die letzte Woche damit verbracht, die Threads im Forum zu lesen, konnte aber immer noch nicht die richtige Lösung für mein Problem finden. Ich wiederhole diese Frage hier anhand gefälschter Beispiele, die ich erfunden habe. Kann jemand helfen, die Fehlermeldung zu erklären und eine Lösung anzubieten?
Mein Trainingsdatensatz hat ungefähr 1000 Datensätze und der Testdatensatz hat ungefähr 150. Es gibt keine NA oder leere Felder in beiden Datensätzen.
mein CART Modell ctree unter dem Party-Paket verwendet, ist:
mytree<- ctree(Rate~Bank+Product+Salary, data=data_train)
data_train Beispiel:
Rate Bank Product Salary
1.5 A aaa 100000
0.6 B abc 60000
3 C bac 10000
2.1 D cba 50000
1.1 E cca 80000
data_test Beispiel:
Rate Bank Product Salary
2.0 A cba 80000
0.5 D cca 250000
0.8 E cba 120000
2.1 C abc 65000
levels(data_train$Bank) : A, B, C, D, E
levels(data_test$Bank): A,D,E,C
Ich habe versucht, auf das gleiche Niveau zu setzen unter Verwendung der folgenden Codes:
>is.factor(data_test$Bank)
TRUE
(Made sure Bank and Products are factors in both datasets)
>levels(data_test$Bank) <-union(levels(data_test$Bank), levels(data_train$Bank))
> levels(data_test$product)<-union(levels(data_test$product),levels(data_train$product))
aber wenn ich versuche, Vorhersage auf dem Testdatensatz zu laufen, bekomme ich folgende Fehlermeldung:
> fit1<- predict(mytree,newdata=data_test)
Error in checkData(oldData, RET) :
Levels in factors of new data do not match original data
Ich habe auch versuchte die folgende Methode, aber es ändert die Felder meines Testdatensatzes ... :
levels(data_test$Bank) <-levels(data_train$Bank)
Die data_test Tabelle geändert:
Rate Bank(altered) Bank (original)
2.0 A A
0.5 B D
0.8 C E
2.1 D C
Große Arbeit um. Funktioniert wie Magie. – yiyisue