我正在使用R中的rpart包来创建一个名为'myData'的数据框中的决策树模型。它有85,590行。
决策树是使用这样的代码创建的(关键部分是'data = myData'):
decTree< - rpart(结果~var1 + var2 + ..., data = myData,method =“anova”,control = rpart.control(minsplit = 30))
如果我绘制&标记该决策树的“叶子”(终端)节点,我在第一个节点的“左侧”得到66,667的初始分割。右边18,923(按预期添加到85,590,总行数。)
plot(decTree)#Plot the tree
text(decTree,use.n = TRUE)#Label the tree
创建此初始拆分的规则是var1< 1.5。
但是,如果我计算myData中var1为<的行数。 1.5,我得到79,518,而不是预期的85,590(如果我计算var1> = 1.5的行,我得到6,072的'补码',而不是树中显示的预期的18,923。)
长度((myData $ var1< 1.5))
[1] 79518
我意识到你不可能自己重现这种行为(以前的rpart模型在节点数方面对我来说正常工作,所以不知道为什么我这次遇到麻烦),但是我希望之前有人遇到过这个问题,否则我的代码会发现一些愚蠢的错误......
我尝试重新运行它,但仍然得到所有相同(不匹配)的叶子数量。
另外,我检查了myData $ frame,它肯定不仅仅是'n = ...'标签错了; $ frame值与图中显示的值匹配(并且与我自己完成的计数不匹配。)
decTree $帧
最后,'var1'值都不是NA。即:
长度(其(is.na(myData的$ VAR1)))
[1] 0