簡體   English   中英

R從partykit決策樹中提取終端節點信息

[英]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函數有一段時間,但找不到可以幫助我提取剛才列出的信息的函數。

有人可以幫我嗎? 謝謝!

與往常一樣,有幾種方法可以獲取您要查找的信息。 提取存儲在特定nodeinfo的技術方法是使用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替換為您感興趣的任何其他摘要統計量。

可以通過以下方式獲取simplepartynodeapply()

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM