像往常一樣有幾種方法來獲取您正在尋找的信息。提取存儲在特定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)
然後你就可以很容易地通過
with(fitted(ct), tapply(`(response)`, `(fitted)`, mean))
## 3 4 5
## 18.20000 39.75000 65.26316
當然計算節點明智mean
S,你可以用您感興趣的任何其他彙總統計數字替換mean
。
nodeapply()
for t他simpleparty
可以通過:
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
## ...
非常感謝你的回答!你是R的DT之王!我非常感謝你在這件事上給予我的所有幫助,我希望我能繼續向你學習! –
@RichardLi我不確定它是否符合貴族的要求,但如果我們的軟件對您有用,我很高興! ;-) –
我可以問一個關於這個話題的後續問題嗎?我已經使用nodeapply(info_node)提取了信息,並且我想使這個過程自動化,例如:創建一個函數來提取一系列節點的節點信息,但是我沒有在函數中這樣做。提取需要使用記號「nodeinfo $'nodeid' $ distribution」作爲示例,但是在函數內部,如果我將j定義爲節點id,則該函數無法識別nodeinfo $'j' $分佈的表示法。你有解決方案嗎?非常感謝!! –