不在R

时间:2015-04-23 11:45:47

标签: r decision-tree rpart

我是R和rpart包的新手。我想使用以下示例数据创建一个树。

我的数据集与此类似     mydata =

"","A","B","C","status"
"1",TRUE,TRUE,TRUE,"okay"
"2",TRUE,TRUE,FALSE,"okay"
"3",TRUE,FALSE,TRUE,"okay"
"4",TRUE,FALSE,FALSE,"notokay"
"5",FALSE,TRUE,TRUE,"notokay"
"6",FALSE,TRUE,FALSE,"notokay"
"7",FALSE,FALSE,TRUE,"okay"
"8",FALSE,FALSE,FALSE,"okay"
fit <- rpart(status ~ A + B + C, data = mydata, method = "class")

或 我尝试了不同的公式和不同的方法。但始终只生成根节点。没有可能的情节。 它的展示

fit
n= 8 
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 8 3 okay (0.3750000 0.6250000) *

如何创建树。?我需要显示百分比 &#34;没关系&#34;并且&#34; notokay&#34;在每个节点上。我需要指定A,B或C中的一个 用于拆分和显示统计信息

1 个答案:

答案 0 :(得分:1)

使用默认设置rpart()时,根本不考虑拆分。默认情况下,minsplit参数为20(请参阅?rpart.control),这是&#34;节点中必须存在的最小观察数,以便尝试进行拆分。 #34;因此,对于您的8次观察,甚至不考虑分裂。

如果您决定考虑拆分,则可以减少minbucket和/或minsplit参数。例如

fit <- rpart(status ~ A + B + C, data = mydata,
  control = rpart.control(minsplit = 3))

生成以下树:

fitted rpart tree

显示由

创建
plot(partykit::as.party(fit), tp_args = list(beside = TRUE))

rpart的打印输出为:

n= 8 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

1) root 8 3 okay (0.3750000 0.6250000)  
  2) A=FALSE 4 2 notokay (0.5000000 0.5000000)  
    4) B=TRUE 2 0 notokay (1.0000000 0.0000000) *
    5) B=FALSE 2 0 okay (0.0000000 1.0000000) *
  3) A=TRUE 4 1 okay (0.2500000 0.7500000) *

这是否特别有用是一个不同的问题,但是......