私はパーティーキットパッケージのctree分類決定木を訓練しました。私は、葉のノードだけでなくサブツリーの分類確率を計算する必要があります。 リーフ1(120観測):0.45 葉2(160観測):0.49 リーフ3(190観測):0.83R partykit substreeの分類確率を計算する
ため だから、例えばサブツリーは、以下の確率で3つのリーフ・ノードで構成されている場合この仮説的なサブツリーは、 120 * 0.42 + 160 * 0.49 + 190 * 0.83 /(120 + 160 + 190)= 0.507
などとなります。私はctreeオブジェクトをトラバースしてすべてを計算する必要があります再帰的に各ノードの重み付き確率を計算する。
私はこのコードを持っている:木の上にトラバース
data(airquality)
airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq,
controls = ctree_control(maxsurrogate = 3))
traverse <- function(treenode){
if(treenode$terminal){
bas=paste("Current node is terminal node with",treenode$nodeID,'prediction',treenode$prediction)
print(bas)
return(0)
} else {
bas=paste("Current node",treenode$nodeID,"Split var. ID:",treenode$psplit$variableName,"split value:",treenode$psplit$splitpoint,'prediction',treenode$prediction)
print(bas)
}
traverse(treenode$left)
traverse(treenode$right)
}
はpartykitオブジェクトでは動作しません。葉ノードのみのため、すべてのporbabilities一覧表示されます、私はこのコードを持っている一方、 :PARTYKITオブジェクトに横断し、この加重平均を計算するコードにこれら2つの断片を結合する
preds.ls <- list(predict(airct , type = "prob"))[1]
pred.probs.df <- unique(as.data.frame((preds.ls[[1]])))
任意の提案を高く評価しています
投稿されたコードにいくつかのエラーが含まれているため、正確に何をしたいのかはわかりません。しかし、私はこの答えは、あなたが望むことを(またはより正確な質問をするのに役立つと思う):http://stackoverflow.com/questions/41968910/r-extracting-inner-node-information-and-splits-from -ctree-partykit/41976697#41976697 –