2017-05-29 27 views
1

randomForestの出力のプロットツリーは、Rの同じ名前のパッケージでどのように機能しますか?たとえば、私はirisデータを使用し、最初のツリーを500個の出力タンスにプロットしたいとします。 irisデータセットでrandomForestパッケージ内の500本のツリーの1つをプロットする

を:私のコードは、あなたがrandomForestパッケージ(https://cran.r-project.org/web/packages/randomForest/randomForest.pdf公式ガイド):でgetTree()機能を使用することができます

model <-randomForest(Species~.,data=iris,ntree=500) 
+0

次の回答は役に立ちますか? https://stats.stackexchange.com/questions/41443/how-to-actually-plot-a-sample-tree-from-randomforestgettree – Avitus

+0

@Avitusは答えに感謝しますが、私は理解できません。あなたは私にrandomForest関数の出力でプロットの最初のツリーのための簡単なコードを取得できますか? –

+0

私は 'randomForest'パッケージに対して下記の答えを追加します。他のパッケージ - 「パーティー」 - 類似の機能を許可する – Avitus

答えて

2

ある

require(randomForest) 
data(iris) 

## we have a look at the k-th tree in the forest 
k <- 10 
getTree(randomForest(iris[, -5], iris[, 5], ntree = 10), k, labelVar = TRUE) 
+0

このツリーをどのようにプロットできますか?上記のコードに描画プロットコードを追加してください。ありがとう –

+0

@Amin上記のコードはあなたに選択された木を与えます( 'k < - 10')。あなたがそれを視覚化したいなら、もう少し努力する必要があります(私は 'randomForest'に直接プロット関数を知らない)。この回答をお寄せいただきありがとうございます。https://sharing.github.io/machine_learning/2017/03/16/rf_plot_ggraph – Avitus

0

あなたは以下のようにプロットすることcforestを使用することができます、私は5に値をハードコードしている、あなたの要件ごとに変更することがあります。

ntree <- 5 
library("party") 
cf <- cforest(Species~., data=iris,controls=cforest_control(ntree=ntree)) 

for(i in 1:ntree){ 
pt <- prettytree([email protected][[i]], names([email protected]@get("input"))) 
nt <- new("Random Forest BinaryTree") 
[email protected] <- pt 
[email protected] <- [email protected] 
[email protected] <- [email protected] 

pdf(file=paste0("filex",i,".pdf")) 
plot(nt, type="simple") 
dev.off() 

} 

cforestランダムフォレストの別の実装である、優れているとは言えないが、一般的には、私たちが見ることができるいくつかの違いがあります。違いは、cforestは、randomForestパッケージと比較してターミナルノードに大きな重みを付ける条件付き推論を使用することです。この実装では、端末ノードに等しい重みが与えられます。

一般に、cofrestは加重平均を使用し、randomForestは通常の平均を使用します。 thisにチェックしてください。

+0

私は 'randomForest'を使いたいのですが、' randomForest'の代わりに 'cforest'を使うことができますか? –

+0

@aminroshani、編集を参照してください – PKumar

関連する問題