0

如果您运行以下命令:

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 相同的方式获取节点及其孩子的列表。我该怎么做?

4

1 回答 1

1

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

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

于 2015-09-26T22:53:56.153 回答