[英]R extract terminal node info from partykit decision tree
我創建了一個constparty決策樹(自定義拆分規則)並打印出樹結果。 結果看起來像這樣:
Fitted party:
[1] root
| [2] value.a < 1651: 0.067 (n = 1419, err = 88.6)
| [3] value.a >= 1651: 0.571 (n = 7, err = 1.7)
我正在嘗試提取終端節點信息(yval:0.067和0.571;每個節點上的n:1419和7;以及err:88.6和1.7),並將它們放入列表中,同時具有相應的節點ID(節點ID 2和3),以便以后可以使用這些信息。
我一直在研究partykit函數有一段時間,但找不到可以幫助我提取剛才列出的信息的函數。
有人可以幫我嗎? 謝謝!
與往常一樣,有幾種方法可以獲取您要查找的信息。 提取存儲在特定node
的info
的技術方法是使用nodeapply(object, ids, info_node)
,其中info_node
返回存儲在相應節點中的信息列表。
但是,在constparty
對象的終端節點中,沒有存儲任何內容。 取而代之的是,存儲已擬合節點的響應的整個分布,並可以由fitted(object)
提取。 它包含一個數據幀,其中包含觀察到的(response)
(fitted)
節點和觀察到的(weights)
(如果有)。 然后,您可以輕松地使用tapply()
或aggregate()
或類似的東西來計算節點均值等。
可替代地,可以將轉換constparty
對象到simpleparty
其存儲在節點中的印刷信息和對象提取它。
這兩種策略的一個有效示例是cars
數據的簡單回歸樹:
library("partykit")
data("cars", package = "datasets")
ct <- ctree(dist ~ speed, data = cars)
然后,您可以通過以下方式輕松計算節點mean
with(fitted(ct), tapply(`(response)`, `(fitted)`, mean))
## 3 4 5
## 18.20000 39.75000 65.26316
當然,您可以將mean
替換為您感興趣的任何其他摘要統計量。
可以通過以下方式獲取simpleparty
的nodeapply()
:
nodeapply(as.simpleparty(ct), ids = nodeids(ct, terminal = TRUE), info_node)
## $`3`
## $`3`$prediction
## [1] 18.2
##
## $`3`$n
## n
## 15
##
## $`3`$error
## [1] 1176.4
##
## $`3`$distribution
## NULL
##
## $`3`$p.value
## NULL
##
##
## $`4`
## $`4`$prediction
## [1] 39.75
## ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.