Search for corresponding node in a regression tree using rpart

后端 未结 3 614
再見小時候
再見小時候 2020-12-17 00:04

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

相关标签:
3条回答
  • 2020-12-17 00:50

    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")
    
    0 讨论(0)
  • 2020-12-17 00:59

    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.)

    0 讨论(0)
  • 2020-12-17 01:03

    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).

    0 讨论(0)
提交回复
热议问题