2016-04-04 26 views
0

私は、次のRPART持っている:私は、各分割ノードとその値を取得し、次の順序でそれらを書きたいRのrpart(CART)決定木のプロパティを取得するには?

library("partykit") 
library("rpart") 
res = rpart(Species ~., data = iris) 
pres <- as.party(res) 

> pres 

Model formula: 
Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width 

Fitted party: 
[1] root 
| [2] Petal.Length < 2.45: setosa (n = 50, err = 0.0%) 
| [3] Petal.Length >= 2.45 
| | [4] Petal.Width < 1.75: versicolor (n = 54, err = 9.3%) 
| | [5] Petal.Width >= 1.75: virginica (n = 46, err = 2.2%) 

Number of inner nodes: 2 
Number of terminal nodes: 3 

を:

各レベルは、その高いレベルから分離されている
{Petal.Length 2.45 {Petal.Width 1.75} } 

{ J48 hereの場合と非常によく似ています。

答えて

0

解決策は以下のとおりです。

library("partykit") 
pres <- as.party(res) 


partykit:::.list.rules.party(pres) 

nam <- names(pres$data) 
tr <- as.list(pres$node) 
str <- "(" 
update_str <- function(x) { 
    if(is.null(x$kids)) { 
    str <<- paste(str, ")") 
    } else { 
    str <<- paste(str, nam[x$split$varid], x$split$breaks, "(") 
    for(i in x$kids) update_str(tr[[i]]) 
    } 
} 
update_str(tr[[1]]) 
> str 
[1] "(Petal.Length 2.45 () Petal.Width 1.75 ())"