我是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中的一个 用于拆分和显示统计信息
答案 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))
生成以下树:
显示由
创建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) *
这是否特别有用是一个不同的问题,但是......