提取 lmtree 对象的拆分列表

Extracting list of the split of a lmtree object

我正在使用 partykit 包中的 lmtree 函数 我正在寻找类似于 path.rpart 函数的函数,即 一个函数,它在列表中给出从根到所选节点的路径上的拆分。

它想要类似这样的东西:

 set.seed(1)
 library(rpart)
 x=runif(100);z=runif(100);y=jitter(ifelse(z>.5,2*x,3*x+2),amount=.1);
 rp=rpart(x~y)
 path.rpart(rp,5)

 #node number: 5 
 #root
 #y< 0.8785
 #y>=0.4081

使用 lmtree :

 library(partykit)
 tr=lmtree(x~y|z)
 #and here I need a function similar to path.rpart

我检查了 node_party 和 get_paths 函数,但这不是我需要的。 有没有人建议从 lmtree 对象中提取此信息? 非常感谢您的帮助。

classlmtree 的模型继承自 party,就像 ctree() 的输出一样。因此,此处针对 ctree() 输出在 SO 上讨论的相同方法也可以应用于 lmtree() 输出。即,您可以使用(仍未导出).list.rules.party() 函数:

partykit:::.list.rules.party(tr)
##                        2                        3 
## "z <= 0.495593577856198"  "z > 0.495593577856198" 

有关进一步改编,请参阅:另请参阅:

  • ctree() - How to get the list of splitting conditions for each terminal node?
  • Get decision tree rule/path pattern for every row of predicted dataset for rpart/ctree package in R