如何在 R 中获取 rpart (CART) 决策树的属性?
How to get properties of rpart (CART) decision tree in R?
我有以下部分:
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 .
所做的非常相似
解决方法是:
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 ( ) )"
我有以下部分:
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
解决方法是:
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 ( ) )"