繁体   English   中英

没有在R中通过rpart创建树

[英]not creating tree by rpart in R

我是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) *

如何创建树。 我需要在每个节点上显示“ okay”和“ notokay”的百分比。 我需要从A,B或C中指定一个进行拆分并显示统计信息

使用rpart()的默认设置时,根本不考虑拆分。 默认情况下, minsplit参数为20 (请参阅?rpart.control ),它是“节点中必须存在的最小数目的观察值才能尝试进行拆分”。 因此,对于您的8个观察结果,甚至不考虑拆分。

如果确定要拆分,则可以减少minbucket和/或minsplit参数。 例如

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

产生以下树:

拟合的rpart树

显示由创建

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) *

但是,这是否特别有用是另一个问题……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM