4

すべてのターミナルノードの重みを一覧表示するために使用できるものは次のとおりです。ただし、各ターミナルノードIDによる重みだけでなく、応答予測を取得するためのコードを追加するにはどうすればよいですか。

出力を次のようにしたいとします

ここに画像の説明を入力してください

-これが私がこれまでに体重を取得するために持っているものです

nodes(airct, unique(where(airct))) 

ありがとうございました

4

2 に答える 2

6

二分木は大きなS4オブジェクトであるため、データを抽出するのが難しい場合があります。

ただし、BinaryTreeオブジェクトのplotメソッドには、ターミナルノードをプロットするfunction(node)形式のオプションのパネル関数があります。したがって、プロットすると、ノード情報を取得できます。

ここでは、プロット関数を使用して情報を抽出し、さらにgridExtraパッケージを使用してターミナルノードをテーブルに変換しました。

library(party)
library(gridExtra)
set.seed(100)
lls <- data.frame(N = gl(3, 50, labels = c("A", "B", "C")), 
                  a = rnorm(150) + rep(c(1, 0,150)),
                  b = runif(150))
pond= sample(1:5,150,replace=TRUE)
tt <- ctree(formula=N~a+b, data=lls,weights = pond)
output.df <- data.frame()
innerWeights <- function(node){

 dat <- data.frame (x=node$nodeID,
                    y=sum(node$weights),
                    z=paste(round(node$prediction,2),collapse='  '))
  grid.table(dat,
             cols = c('ID','Weights','Prediction'),
             h.even.alpha=1, 
             h.odd.alpha=1,  
             v.even.alpha=0.5, 
             v.odd.alpha=1)
   output.df <<- rbind(output.df,dat)  # note the use of <<-

}

plot(tt, type='simple', terminal_panel = innerWeights)


data
  ID Weights       Prediction
1  4      24  0.42  0.5  0.08
2  5      17 0.06  0.24  0.71
3  6      24    0.08  0  0.92
4  7     388 0.37  0.37  0.26

ここに画像の説明を入力してください

于 2012-12-20T06:11:52.097 に答える
0

これが私が見つけたものです、それは少し余分な情報でうまくいきます。しかし、将来誰かがそれらを必要とする場合に備えて、ここに投稿したいと思います。

y <- do.call(rbind, nodes(tt, unique(where(tt))))
write.table(y, 'clipboard', sep='\t') 

@agstudy、あなたの考えを教えてください。

于 2012-12-21T01:21:02.310 に答える