首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用rpart搜索回归树中的相应节点

使用rpart搜索回归树中的相应节点
EN

Stack Overflow用户
提问于 2011-02-24 09:33:34
回答 4查看 4.3K关注 0票数 8

我对R很陌生,我被一个相当愚蠢的问题困住了。

为了进行分类和预测,我正在使用rpart包校准一个回归树。

由于R,校准部分容易做,易于控制。

代码语言:javascript
运行
复制
#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函数似乎非常适合需要。

代码语言:javascript
运行
复制
# 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方法,我只得到了新元素的预测比率,并且找不到一种方法可以得到决策树叶,而新元素属于那里。

我认为这应该很容易得到,因为必须的预测方法已经找到了叶来返回这个比率。

有几个参数可以通过class=参数提供给预测方法,但是对于回归树,似乎都返回相同的东西(决策树的目标属性的值)。

有人知道如何在决策树中获得相应的节点吗?

通过使用path.rpart方法分析节点,可以帮助我理解结果。

EN

回答 4

Stack Overflow用户

发布于 2011-06-21 19:15:06

不幸的是,本杰明的答案行不通:type="vector"仍然返回预测值。

我的解决办法很简单,但我不认为有更好的办法。诀窍是用相应的节点数替换模型帧中的预测y值。

代码语言:javascript
运行
复制
tree2 = tree
tree2$frame$yval = as.numeric(rownames(tree2$frame))
predict = predict(tree2, newdata=validationData)

现在,预测的输出将是节点数,而不是预测的y值。

(注意:在我的例子中,tree是一棵回归树,而不是分类树。)对于分类树,您可能需要省略as.numeric或用as.factor替换它。)

票数 13
EN

Stack Overflow用户

发布于 2016-06-06 12:35:35

您可以使用partykit包:

代码语言:javascript
运行
复制
fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)

library("partykit")
fit.party <- as.party(fit)
predict(fit.party, newdata = kyphosis[1:4, ], type = "node")

作为你的榜样

代码语言:javascript
运行
复制
predict(as.party(tree), newdata = validationData, type = "node")
票数 2
EN

Stack Overflow用户

发布于 2011-03-10 18:21:31

我认为您想要的是type="vector"而不是class="prob" (我不认为类是预测方法的可接受参数),正如rpart中所解释的那样:

If type=“向量”:预测响应的向量。对于回归树,这是节点的平均响应,对于泊松树是估计的响应率,对于分类树是预测的类(作为一个数字)。

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

https://stackoverflow.com/questions/5102754

复制
相关文章

相似问题

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