すべてのターミナルノードの重みを一覧表示するために使用できるものは次のとおりです。ただし、各ターミナルノードIDによる重みだけでなく、応答予測を取得するためのコードを追加するにはどうすればよいですか。
出力を次のようにしたいとします
-これが私がこれまでに体重を取得するために持っているものです
nodes(airct, unique(where(airct)))
ありがとうございました
すべてのターミナルノードの重みを一覧表示するために使用できるものは次のとおりです。ただし、各ターミナルノードIDによる重みだけでなく、応答予測を取得するためのコードを追加するにはどうすればよいですか。
出力を次のようにしたいとします
-これが私がこれまでに体重を取得するために持っているものです
nodes(airct, unique(where(airct)))
ありがとうございました
二分木は大きな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
これが私が見つけたものです、それは少し余分な情報でうまくいきます。しかし、将来誰かがそれらを必要とする場合に備えて、ここに投稿したいと思います。
y <- do.call(rbind, nodes(tt, unique(where(tt))))
write.table(y, 'clipboard', sep='\t')
@agstudy、あなたの考えを教えてください。