gpt4 book ai didi

r - 如何获得J48尺寸和叶子数量

转载 作者:行者123 更新时间:2023-12-02 04:17:41 26 4
gpt4 key购买 nike

如果我通过以下方式构建 J48 树:

library(RWeka)

fit <- J48(Species~., data=iris)

我得到以下结果:

> fit
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

我想将叶子数量放入变量N中(因此N将得到5 )并将树的大小设置为S(因此S将得到9)。

有没有办法直接从 J48 树获取此信息?

最佳答案

正如 @LyzandeR 先前指出的那样,直接在 J48 对象上执行此操作并不容易。一般来说,RWeka 中的拟合函数返回的对象通常包含相对较少的 R 端信息(例如,仅调用和拟合预测)。主要成分通常是对 Weka 构建的 Java 对象的引用,可以通过 .jcall 在 Java 端应用 Weka 自己的方法,然后在 R 中返回。

但是,对于 J48 树,可以轻松地将来自 Java 端的信息转换为可使用标准函数和方法的 R 对象。 partykit 包提供了一个强制函数,可将 J48 树转换为 constparty 对象(叶子中具有常量拟合的递归分区)。然后可以使用诸如length()width()depth()之类的方法来查询节点、叶子和节点的数量。分别是树的深度。

library("RWeka")
fit <- J48(Species ~ ., data = iris)
library("partykit")
p <- as.party(fit)
length(p)
## [1] 9
width(p)
## [1] 5
depth(p)
## [1] 4

此外,predict()plot()print() 和许多其他工具可供 party 对象。

我建议使用这种方法而不是@LyzandeR建议的文本解析,因为as.party转换不依赖于潜在的容易出错的文本计算。相反,它在内部调用 Weka 自己的 graph 生成器(通过 .jcall),然后将其解析为 constparty 结构。

关于r - 如何获得J48尺寸和叶子数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32693128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com