I\'m pretty new to R and I\'m stuck with a pretty dumb problem.
I\'m calibrating a regression tree using the rpart package in order to do some class
You can use the partykit package:
fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
library("partykit")
fit.party <- as.party(fit)
predict(fit.party, newdata = kyphosis[1:4, ], type = "node")
For your example just set
predict(as.party(tree), newdata = validationData, type = "node")
Benjamin's answer unfortunately doesn't work: type="vector"
still returns the predicted values.
My solution is pretty klugy, but I don't think there's a better way. The trick is to replace the predicted y values in the model frame with the corresponding node numbers.
tree2 = tree
tree2$frame$yval = as.numeric(rownames(tree2$frame))
predict = predict(tree2, newdata=validationData)
Now the output of predict will be node numbers as opposed to predicted y values.
(One note: the above worked in my case where tree
was a regression tree, not a classification tree. In the case of a classification tree, you probably need to omit as.numeric
or replace it with as.factor
.)
I think what you want is type="vector"
instead of class="prob"
(I don't think class is an accepted parameter of the predict method), as explained in the rpart docs:
If type="vector": vector of predicted responses. For regression trees this is the mean response at the node, for Poisson trees it is the estimated response rate, and for classification trees it is the predicted class (as a number).