[英]Color nodes in rpart tree
box.col()着色如何用於PRP樹形圖? 我想基於任何3個年齡類別或基於節點編號的任何3個分組使用三種顏色對終端節點進行着色(對於我的實際數據,這兩種顏色一起增加,因此可以根據結果值或節點編號進行着色)。
我已經閱讀了打包文檔和小插圖,但仍然不知道從哪里開始,即使是對於兩個小組也是如此。 下面是我嘗試控制2種顏色的兩個示例。 第一個看似隨機,而第二個看似會根據擬合的節點值顯示顏色,但根本不輸出任何顏色。
library(rpart)
library(rpart.plot)
data(ptitanic)
tree <- rpart(age ~ ., data = ptitanic)
prp(tree, extra = 1, faclen=0, nn = T,
box.col=c("green", "red")) #apparently random colouring?
prp(tree, extra = 1, faclen=0, nn = T,
box.col=c("green", "red")[tree$frame$yval]) #no colour
事實證明,指定條件box.col語句與指定語句以有條件地為其他圖形着色沒有什么不同,我發現這篇文章對提出解決方案很有用: 使用條件語句更改數據點的顏色
關鍵是tree$frame
給出一個可用於幫助指定條件語句的數據tree$frame
(請參閱rpart文檔 )。 yval
變量保留了預期的目標結果(在這種情況下為年齡),可用於指示顏色。
以下是2種顏色和3種顏色的解決方案:
# 2 colours
# use ifelse: if predicted age > 30 colour red, else colour green
prp(tree, extra = 1, faclen=0, nn = T,
box.col=ifelse(tree$frame$yval > 30, 'red', 'green'))
# 3 colours
# use findInterval: if age [0,20) then green; if age [20,30) then orange, else red
prp(tree, extra = 1, faclen=0, nn = T,
box.col=c("green", "orange", "red")[findInterval(tree$frame$yval, v = c(0,20,30))])
節點號未存儲在tree$frame
因此我不確定如何根據節點號為框上色,但是出於我的目的,上述解決方案將起作用。
使用box.palette參數:
library(rpart.plot)
data(ptitanic)
tree <- rpart(age ~ ., data = ptitanic)
prp(tree, extra=1, faclen=0, nn=T, box.palette=c("green", "red"))
# examples using built-in palettes
prp(tree, extra=1, faclen=0, nn=T, box.palette="GnRd")
prp(tree, extra=1, faclen=0, nn=T, box.palette="Blues")
box.palette參數是在rpart.plot版本2.0中添加的,該版本在您的原始帖子之后發布。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.