【问题标题】:R: get nodes from root to leaves of a tree model?R:从树模型的根节点到叶子节点?
【发布时间】:2016-05-10 13:12:06
【问题描述】:

我正在使用 R 制作回归树模型:

 library(party)
 mydata = read.csv(“data.csv”)
 TreeModel = ctree(price ~., data = mydata)

我想将树的节点从根提取到任何叶子。但我找不到任何功能来做到这一点。 例如,如果树如下所示: 我想得到从根到任何叶子的路径。所以对于右边的第一片叶子

【问题讨论】:

  • 在您的示例中包含一些数据以使其成为reproducible。准确描述给定输入所需的输出。

标签: r regression treemodel


【解决方案1】:

正如 MrFlick 所说,您应该提供一个可重现的示例。

这可能会让您开始了解如何找到派对包的 BinaryTree 对象的路径:

library(data.tree)
library(party)

airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq, 
               controls = ctree_control(maxsurrogate = 3))


CreateNodeFromParty <- function(splitNode) {
  node <- Node$new(splitNode$nodeID,
                   weights = splitNode$weights,
                   criterion = splitNode$criterion,
                   psplit = splitNode$psplit)
  if (!splitNode$terminal) {
    node$AddChildNode( CreateNodeFromParty(splitNode$left) )
    node$AddChildNode( CreateNodeFromParty(splitNode$right) )
  }
  return (node)
}


tree <- CreateNodeFromParty(airct@tree)

tree

这将为您提供 data.tree 结构:

      levelName
1 1            
2  ¦--2        
3  ¦   ¦--3    
4  ¦   °--4    
5  ¦       ¦--5
6  ¦       °--6
7  °--7        
8      ¦--8    
9      °--9  

要查找特定节点,请执行以下操作:

tree$FindNode(6)$path

这会给你:

[1] "1" "2" "4" "6"

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 2017-05-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多