2016-05-15 14 views
1

Ich verwende das RWeka-Paket in R, um M5-Bäume an einen Datensatz mit "M5P" anzupassen. Ich möchte dann den generierten Baum in einen "Party" -Baum umwandeln, damit ich auf Variablenimportanzen zugreifen kann. Das Problem, das ich habe ist, dass ich nicht as.party die Funktion zu bekommen scheinen kann, ohne immer den folgenden Fehler zu arbeiten:Wie konvertiere ich einen "RWeka" Entscheidungsbaum in einen "Party" Baum in R?

"Error: all(sapply(split, head, 1) %in% c("<=", ">")) is not TRUE" 

Dieser Fehler nur auftritt, wenn ich die Funktion innerhalb einer for-Schleife anwenden, aber die for-Schleife ist notwendig, da ich eine 5-fache Kreuzvalidierung führe.

Unten ist der Code, den ich ausgeführt wurden:

n <- nrow(data) 

k <- 5 

indCV <- sample(rep(1:k,each=ceiling(n/k)), n) 


for(i in 1:k){ 

#Training data is for all the observations where indCV is not equal to i 

training_data <- data.frame(x[-which(indCV==i),]) 

training_response <- y[-which(indCV==i)] 

#Test the data on the fifth of the data where the observation indices are equal to i 

test_data <- x[which(indCV==i),] 

test_response <- y[which(indCV==i)] 

#Fit a pruned model to the training data 

fit <- M5P(training_response~., data=training_data, control=Weka_control(N=TRUE)) 

#Convert to party 

p <- as.party(fit) 
} 
+0

Mögliches Duplikat von [Wie plotten Sie einen CostSensitiveClassifier-Baum in R?] (Https://stackoverflow.com/questions/24420191/how-do-you-plot-a-costsensitiveclassifier-tree-in-r) –

Antwort

2

Das RWeka Paket ein Beispiel für die Umwandlung von M5P Bäume in party Objekte hat. Wenn Sie example("M5P", package = "RWeka") ausführen, werden die Baumvisualisierungen tatsächlich von partykit gezeichnet. Nach dem Ausführen der Beispiele siehe plot(m3) und as.party(m3).

Während jedoch für J48 können Sie ein vollwertiges constparty Objekt erhalten, das gleiche gilt nicht für M5P. Im letzteren Fall kann die Baumstruktur selbst in party konvertiert werden, aber die linearen Modelle innerhalb der Knoten sind nicht vollständig einfach in lm Objekte umzuwandeln. Wenn Sie also die party-Darstellung verwenden möchten, um Kennzahlen zu berechnen, die nur von der Baumstruktur abhängen (z. B. Variablen, die für Aufspaltungen, Anzahl von Aufteilungen, Splitpoints usw. verwendet werden), können Sie dies tun. Aber wenn Sie Messungen berechnen möchten, die von den Modellen oder den Vorhersagen abhängen (z. B. mittlere quadratische Fehler usw.), wird die Klasse party nicht viel helfen.