2

ツリーを記述する if/then ステートメントがあります。例えば:

node1: if VAR1 < X node = 2 else node = 3
node2: if VAR2 < Y node = 4 else node = 5
node3: terminal value = Z
...

不等式は常に「<」未満で表されます。ルールは、必ずしもツリーの深さの順になっているわけではありません。

ステートメントを解析する作業を無視して、R でツリーを構築/視覚化する最も簡単な方法は何ですか? ルールごとに 1 回呼び出してツリーを繰り返し構築し、plot() を呼び出すことができるオブジェクト/関数/パッケージはありますか?

4

3 に答える 3

0

pkg:party メソッドのコードを掘り下げてみましたが、依存関係を効果的に追うことができませんでした。rpart パッケージ コードを見た方が簡単かもしれないと思いました。(編集: igraph パ​​ッケージをさらに検討することをお勧めします。)

require(rpart)
fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)
print(fit)
#------------
n= 81 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 81 17 absent (0.79012346 0.20987654)  
   2) Start>=8.5 62  6 absent (0.90322581 0.09677419)  
     4) Start>=14.5 29  0 absent (1.00000000 0.00000000) *
     5) Start< 14.5 33  6 absent (0.81818182 0.18181818)  
      10) Age< 55 12  0 absent (1.00000000 0.00000000) *
      11) Age>=55 21  6 absent (0.71428571 0.28571429)  
        22) Age>=111 14  2 absent (0.85714286 0.14285714) *
        23) Age< 111 7  3 present (0.42857143 0.57142857) *
   3) Start< 8.5 19  8 present (0.42105263 0.57894737) *
#---code resumes ------
plot(fit)

ここに画像の説明を入力

rpart:::plot.rpart   # will show the code  ... depends on rpart::rpconvert
rpart::rpconvert
于 2012-09-18T20:03:29.173 に答える
0

私が以前に与えたコメントから拡張すると、これはパーティーパッケージの例のplot.BinaryTreeトップです:

   set.seed(290875)

   airq <- subset(airquality, !is.na(Ozone))
   airct <- ctree(Ozone ~ ., data = airq)

   ### regression: boxplots in each node
   plot(airct, terminal_panel = node_boxplot, drop_terminal = TRUE)

ctree上記のコマンドに基づいて、次のグラフが生成されます。

ここに画像の説明を入力

このパッケージには、すぐに始められる 2 つのかなりまともなビネットが含まれています。

于 2012-09-18T19:08:05.703 に答える