我对R很新,我遇到了一个非常愚蠢的问题 .
我正在使用 rpart 包校准回归树,以便进行一些分类和一些预测 .
由于R,校准部件易于操作且易于控制 .
#the package rpart is needed
library(rpart)
# Loading of a big data file used for calibration
my_data <- read.csv("my_file.csv", sep=",", header=TRUE)
# Regression tree calibration
tree <- rpart(Ratio ~ Attribute1 + Attribute2 + Attribute3 +
Attribute4 + Attribute5,
method="anova", data=my_data,
control=rpart.control(minsplit=100, cp=0.0001))
在校准了一个大的决策树之后,我希望,对于给定的数据样本,找到一些新数据的相应聚类(以及预测值) .predict
功能似乎非常适合需要 .
# read validation data
validationData <-read.csv("my_sample.csv", sep=",", header=TRUE)
# search for the probability in the tree
predict <- predict(tree, newdata=validationData, class="prob")
# dump them in a file
write.table(predict, file="dump.txt")
然而,使用 predict
方法,我只得到我的新元素的预测比率,我找不到一种方法获得我的新元素所属的 decision tree leaf .
我认为它应该很容易获得,因为预测方法 must 已经发现叶子以返回比率 .
可以通过 class=
参数为预测方法提供多个参数,但对于回归树,所有参数似乎都返回相同的内容(决策树的目标属性的值)
有谁知道如何在决策树中获取相应的节点?
通过使用 path.rpart
方法分析节点,可以帮助我理解结果 .
3 回答
Benjamin 's answer unfortunately doesn' t work:
type="vector"
仍然返回预测值 .我的解决方案非常麻烦,但我认为没有更好的方法 . 诀窍是用相应的节点号替换模型帧中的预测y值 .
现在,预测的输出将是节点数,而不是预测的y值 .
(注意:以上情况适用于我的情况,其中
tree
是回归树,而不是分类树 . 对于分类树,您可能需要省略as.numeric
或将其替换为as.factor
. )您可以使用partykit包:
对于你的例子,只需设置
我认为你想要的是
type="vector"
而不是class="prob"
(我认为类不是预测方法的可接受参数),如rpart docs中所述: