首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用rpart?

如何使用rpart?
EN

Stack Overflow用户
提问于 2014-04-30 15:09:07
回答 2查看 22.1K关注 0票数 7

我无法用rpart获得太多的信息。

我有一个数据框架:

代码语言:javascript
复制
a = structure(list(V1 = c(2, 3, 4, 2, 3, 2, 3, 3, 5, 3), V2 = c(15, 
26, 94, 15, 26, 33, 33, 33, 5, 15), V3 = structure(c(1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L), .Label = c("f", "t"), class = "factor")), .Names = c("V1", 
"V2", "V3"), row.names = c(NA, -10L), class = "data.frame")

> a
   V1 V2 V3
1   2 15  f
2   3 26  f
3   4 94  f
4   2 15  f
5   3 26  f
6   2 33  f
7   3 33  f
8   3 33  t
9   5  5  t
10  3 15  t

> rpart(V3 ~ ., data=a)
n= 10 

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

1) root 10 3 f (0.7000000 0.3000000) *

为什么rpart不提供更多的信息,例如,有三种情况(V1 == 2)都导致响应= "f“(第1、4、6行)?

实质上,我想找出:

  • 在给出上面的输出之前,用rpart运行了哪些测试?
  • rpart是否包括测试(V2 == 2) ->响应统计数据,如果没有,我如何使它包括这样的测试和结果?

我读过部分小体,但没有找到答案。

EN

回答 2

Stack Overflow用户

发布于 2014-04-30 15:22:39

对你的问题的简短回答可能是:

代码语言:javascript
复制
rpart(V3 ~ V1 + V2,data = a,control = rpart.control(minsplit = 5))

因此,您可能需要花一些时间阅读文档,特别强调rpart.control。但是更广泛地说,注意rpart仍然没有“测试”基于标准V2 == 2的拆分,仅仅是因为该变量是连续的。连续变量上的所有分裂都是简单的二元不等式分裂。只有因素才会根据级别子集的选择而被分割。

你所链接的小插曲包含了一场广泛的讨论(引用了进一步的讨论),详细地讨论了这个函数经过了什么过程来选择它所做的分裂,所以我不知道如何回应你的说法,即你读了它,但没有找到答案。

票数 8
EN

Stack Overflow用户

发布于 2014-04-30 15:22:18

如果您从?rpart开始并遵循下的信息,您将转到?rpart.object,它将告诉您:

为树中的每个节点设置一行数据帧。帧的row.names包含(唯一的)节点编号,它们遵循按节点深度索引的二进制排序。帧的列包括var,一个因子给出在每个节点的分裂中使用的变量的名称(叶节点用“”级表示),n,到达该节点的观察数,wt,到达该节点的观察的大小写权重之和,dev,节点的偏差,yval,节点处响应的拟合值,以及拆分,每个节点的左和右拆分标签的两列矩阵。在帧中还包括复杂性,此拆分将崩溃的复杂性参数,非竞争,记录的竞争对手拆分的数量,以及代理拆分记录的数量。 可能存在的额外响应信息在yval2中,它包含节点上的事件数(泊松树),或包含拟合类的矩阵、每个节点的类计数、类概率和“节点概率”(分类树)。 其中,与根节点中的观察数相同长度的整数向量,包含与每个观察所处的叶节点对应的帧行数。 call 是生成对象的调用的映像,但参数都是命名的,并包含了作为公式参数的实际公式。若要重新评估调用,请表示更新(树)。 terms类的对象(“术语”、“公式”)(参见terms.object)对公式进行了总结。由各种方法使用,但通常与用户没有直接关系。 拆分--描述这些拆分的数字矩阵:只有在存在的情况下才存在。行标签是拆分变量的名称,列是计数,是由拆分向左或向右发送的观察数(未丢失且具有正权重)(对于竞争对手拆分,这是如果使用此拆分将向左或向右发送的数字;对于代理拆分,则为丢失使用此代理项确定的主拆分变量的数目),ncat,该变量的类别或级别的数目(+/-1表示连续变量),改进,这是该拆分给出的偏差的改进,或者,对于代理对象,代理项与主值切分点和索引的一致性。最后一列给出了代理项分裂的调整一致性。对于一个因子,索引列包含c拆分矩阵的行号。对于连续变量,ncat的符号决定子集x<切点还是x>切点被发送到左边。 csplit是一个整数矩阵。(只有当拆分变量中至少有一个是因子或有序因子时,才会出现。)每个这样的拆分都有一行,列的数量是这些因素中级别的最大数目。哪一行由拆分矩阵的索引列给出。如果该因子的级别位于左侧,则列记录1;如果该级别位于右侧,则记录3;如果该级别不存在于树的此节点(或未为该因子定义),则记录2。 方法字符串:用来生长树的方法。一个“类”、"exp“、”泊松“、"anova”或"user“(如果提供了拆分函数)。 cptable:基于复杂性参数的最优剪枝信息矩阵。 variable.importance是一个命名的数字向量,给出每个变量的重要性。(只有在有任何分裂的情况下才会出现。)当由summary.rpart打印时,这些将被重新标度以添加到100。 numresp整数响应数;因子响应的级别数。 **parms,contro**l为所提供的参数的记录,默认值为。 函数用于方法的摘要、打印和文本函数。 ordered 是一个命名的逻辑向量,如果它是一个有序因子,则记录每个变量。 na.action (在相关情况下) model.frame返回的关于从na.action参数派生的NAs的特殊处理的信息。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23391745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档