如何以partykit格式获取txt树的孩子

How to get the kids of a txt tree in partykit format

如果您运行满足以下条件:

library(RWeka) 
data(iris) 
res = J48(Species ~., data = iris)

您将获得以下树:

R> res
J48 pruned tree
------------------

Petal.Width <= 0.6: setosa (50.0)
Petal.Width > 0.6
|   Petal.Width <= 1.7
|   |   Petal.Length <= 4.9: versicolor (48.0/1.0)
|   |   Petal.Length > 4.9
|   |   |   Petal.Width <= 1.5: virginica (3.0)
|   |   |   Petal.Width > 1.5: versicolor (3.0/1.0)
|   Petal.Width > 1.7: virginica (46.0/1.0)

Number of Leaves  :     5

Size of the tree :  9

现在将其复制并粘贴到文本文件中并保存 - 这是我的输入文件。 我想以一种格式获取每个节点(父亲)及其孩子的列表(这只是一个示例),就好像我 运行 R 中的这棵树并使用 as.party 一样。 (记住我不能使用它,因为它只是一种 txt 格式)。 我想以与在 partykit 包中使用 x$kids 相同的方式获取节点及其孩子的列表。 我该怎么做?

原则上,这是可能的,但很可能容易出错。即使它有效,它也不会包含 as.party(res) 包含的所有信息。例如,原始数据中的某些变量(Sepal.LengthSepal.Width)无法在此处推断出来。类似地,在某些级别不是任何终端节点中最频繁的级别的情况下,可能无法推断出所有响应级别。与所有终端节点中的所有响应级别相关的频率也可能无法完全重建。

简而言之:partykit 包在从其他包强制树时避免了纯文本解析,因为结果可能是 wrong/incomplete。转换对象(而不是它们的文本表示)工作可靠。