簡體   English   中英

我可以手動創建RWeka決策(遞歸分區)樹嗎?

[英]Can I manually create an RWeka decision (Recursive Partitioning) tree?

我已經使用RWeka構建了J48決策樹。 我想將其性能與描述現有(外部計算的)決策樹的決策樹進行比較。 我是RWeka的新手,無法手動創建RWeka決策樹。 理想情況下,我想並排顯示這兩個圖像,並使用RWeka可視化效果對其進行繪制(非常有用且干凈)。

現在,我將RWeka計算的決策樹導出到Graphviz並將其操縱到所需的結構中。 我想在開始之前進行檢查,並確保不能簡單地指定要手動指定決策樹的規則。

我不想計算決策樹(我已經做到了),我想手動構造/指定決策樹(在演示文稿中進行統一比較)。

在此先感謝您。

RWeka程序包本身無法做到這一點。 但是, RWeka使用partykit包來顯示其樹,該樹可以完成您想要的操作。 查看vignette(“partykit“, package = “partykit“)如何使用預先指定的partysplit構造遞歸的partynode對象,然后將其轉換為constparty 小插圖為此提供了一個動手的示例。

這里是軟件包一些示例代碼partykit@Achim Zeileis建議。

library(partykit)

加載數據:

data("WeatherPlay", package = "partykit")
WeatherPlay
#  outlook temperature humidity windy play
#  1 sunny 85 85 false no
#  2 sunny 80 90 true no
#  3 overcast 83 86 false yes
#  4 rainy 70 96 false yes
#  5 rainy 68 80 false yes
#  6 rainy 65 70 true no
#  7 overcast 64 65 true yes
...

初始化決策:整數1L表示此拆分適用的尚未指定的數據幀的列。 索引對應於因子的水平(離散拆分),中斷對應於截止值(連續拆分)。

sp_o <- partysplit(1L, index = 1:3)
sp_h <- partysplit(3L, breaks = 75)
sp_w <- partysplit(4L, index = 1:2)

將決策合並到節點中:

pn <- partynode(1L, split = sp_o, kids = list(
  partynode(2L, split = sp_h, kids = list(
  partynode(3L, info = "yes"),
  partynode(4L, info = "no"))),
  partynode(5L, info = "yes"),
  partynode(6L, split = sp_w, kids = list(
  partynode(7L, info = "yes"),
  partynode(8L, info = "no")))))

使數據適合樹:

t2 <- party(pn,
  data = WeatherPlay,
  fitted = data.frame(
    "(fitted)" = fitted_node(pn, data = WeatherPlay),
    "(response)" = WeatherPlay$play, # response variable
  check.names = FALSE),
  terms = terms(play ~ ., data = WeatherPlay),
  )

t3 <- as.constparty(t2)
plot(t3)

來源: http : //cran.r-project.org/web/packages/partykit/vignettes/partykit.pdf

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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