rpart在每个节点中查找观测值

rpart在每个节点中查找观测值,r,tree,rpart,R,Tree,Rpart,我已经使用rpart创建了一个决策树,我想知道如何准确地找到每个终端节点中都有哪些训练数据 我在这个链接中找到了答案: 但出于某种原因,$where函数只生成了一个终端节点向量,而没有表示哪种情况对应于哪种终端节点的行号。 但是,如果我对使用tree包生成的树执行完全相同的操作,我将得到一个行号列表,用相应的终端节点标识每个案例。我注意到唯一的区别是,对于rpart包,$where生成一个int向量,而对于tree包,$where生成一个命名的int向量。我想知道如何为一个由rpart生成的树生

我已经使用rpart创建了一个决策树,我想知道如何准确地找到每个终端节点中都有哪些训练数据

我在这个链接中找到了答案: 但出于某种原因,$where函数只生成了一个终端节点向量,而没有表示哪种情况对应于哪种终端节点的行号。 但是,如果我对使用tree包生成的树执行完全相同的操作,我将得到一个行号列表,用相应的终端节点标识每个案例。我注意到唯一的区别是,对于rpart包,$where生成一个int向量,而对于tree包,$where生成一个命名的int向量。我想知道如何为一个由rpart生成的树生成相同的命名int向量

我还尝试了以下建议的答案: 但这对我不起作用,因为rpart在创建模型时删除了16个观测值,因此结果模型中的观测值数量与用于创建模型的原始数据帧不匹配

抱歉,如果答案看起来很明显,新手R用户在这里

下面是我用来创建这棵树的代码,这棵树用于根据行为特征预测自闭症的诊断:

Set.seed(565808016)
inTrain21<- createDataPartition(clinicaldiagnosis, p=0.75, list=FALSE)
training_data21<- Decisiontree4[ inTrain21,]
testing_data21<- Decisiontree4[-inTrain21,]
test_clinicaldiagnosis21<-clinicaldiagnosis[-inTrain21]
lossmatrix=matrix(c(0,1,1,1,0,1,2,1,0), ncol=3, nrow=3)

set.seed(591251974)
tree_model22= rpart(clinicaldiagnosis~ Visualtracking + etc etc, training_data21, na.action=na.rpart, method="class", control=rpart.control(cp=0.00001), parms=list(loss=lossmatrix))
plot(tree_model22, uniform=TRUE, margin=0.05)
text(tree_model22, use.n=TRUE, pretty=0)
plotcp(tree_model22)
printcp(tree_model22)

pruned_model22=prune(tree_model22, cp=0.0146341)
plot(pruned_model22, uniform=TRUE, margin=0.1)
text(pruned_model22, use.n=TRUE, cex=0.85, splits=TRUE, pretty=0)

tree_pred22=predict(pruned_model22, testing_data21, type="class")
table(tree_pred22, test_clinicaldiagnosis21)
trainingnodes22<-rownames(pruned_model22$frame)[pruned_model22$where] #this only gives a list of terminal nodes without the corresponding row names

请发布您的一些代码或更多技术细节,如每个训练数据必须达到的条件,以便落入每个终端节点。您是如何让rpart放弃观察的。我试着加入一些NA值,但它们仍然在我的测试中被分类。有没有一种方法可以使用内置的脊柱后凸数据集来演示这一点?没有一个好朋友,是很难帮助的。我们无法运行您发布的代码,因为我们没有数据。我想问题已经解决了!使用第二种方法,我刚刚发现缺失的观察结果被删除,并将其从数据集中取出。我认为rpart删除了这些观察值,因为它对所有预测值都有NA,但我想保留这些观察值,因为它对其他未用于构建树的预测值有非NA值。非常感谢您提出这个功能!虽然我仍然不明白为什么$where不显示一个命名的int向量。。。。