R:获取从树模型的根到叶的节点?
R: get nodes from root to leaves of a tree model?
我正在使用 R 制作回归树模型:
library(party)
mydata = read.csv(“data.csv”)
TreeModel = ctree(price ~., data = mydata)
我想提取树的节点从根到任何叶子。但我找不到任何功能来做到这一点。
例如,如果树如下所示:
我想获得从根到任何叶子的路径。所以对于右边的第一片叶子<我想得到一条像(Koc,AirDecat,OTW,OTW,AirDecay)这样的路径,对于最左边的叶子,它应该是(Koc,AirDecay)。非常感谢任何提示。
正如 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"
我正在使用 R 制作回归树模型:
library(party)
mydata = read.csv(“data.csv”)
TreeModel = ctree(price ~., data = mydata)
我想提取树的节点从根到任何叶子。但我找不到任何功能来做到这一点。
例如,如果树如下所示:
正如 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"