Find the data elements in a data frame that pass the rule for a node in a tree model?

前端 未结 2 1923
南旧
南旧 2021-01-03 06:04

So I have used the rpart package to create a tree model and I found an interesting rule and wondered if there was an easy way to see which observations in that data frame pa

2条回答
  •  孤独总比滥情好
    2021-01-03 06:55

    #' subset of rpart node: return logical index
    #' @param tree rpart model
    #' @param node which node/leaf?
    #' @export
    subset_rpart <- function (tree, node) {
      nodes = as.numeric(rownames(tree$frame))
      nodes = log(nodes, 2)
      lower = log(node, 2)
      upper = log(node + 1, 2)
      a = floor(lower)
      lower_ = lower - a
      upper_  = upper - a
      nodes_ = nodes %% 1
      w = which(((nodes_ >= lower_ & nodes_ < upper_) | (nodes_ + 1 < upper_)) & nodes >= lower)
      tree$where %in% w
    }
    
    
    
    #' subset df by subset_rpart
    #' @param tree rpart model
    #' @param node node number
    #' @param df df
    #' @export
    subset.rpart = function(tree, node, df){
      df[subset_rpart(tree, node), ]
    }
    

提交回复
热议问题