gpt4 book ai didi

r - 如何从 rpart 对象获取新观察的终端节点?

转载 作者:行者123 更新时间:2023-12-04 10:16:35 24 4
gpt4 key购买 nike

说我有

head(kyphosis)
inTrain <- sample(1:nrow(kyphosis), 45, replace = F)
TRAIN_KYPHOSIS <- kyphosis[inTrain,]
TEST_KYPHOSIS <- kyphosis[-inTrain,]

(kyph_tree <- rpart(Number ~ ., data = TRAIN_KYPHOSIS))

如何从 TEST_KYPHOSIS 中的每个观测值中获取拟合对象的终端节点?

如何从每个测试观察映射到的终端节点获取摘要,例如偏差和预测值?

最佳答案

rpart实际上有这个功能,但它没有公开(奇怪的是,这是一个相当明显的要求)。

predict_nodes <-
function (object, newdata, na.action = na.pass) {
where <-
if (missing(newdata))
object$where
else {
if (is.null(attr(newdata, "terms"))) {
Terms <- delete.response(object$terms)
newdata <- model.frame(Terms, newdata, na.action = na.action,
xlev = attr(object, "xlevels"))
if (!is.null(cl <- attr(Terms, "dataClasses")))
.checkMFClasses(cl, newdata, TRUE)
}
rpart:::pred.rpart(object, rpart:::rpart.matrix(newdata))
}
as.integer(row.names(object$frame))[where]
}

进而:
> predict_nodes(kyph_tree, TEST_KYPHOSIS)
[1] 5 3 4 3 3 5 5 3 3 3 3 5 5 4 3 5 4 3 3 3 3 4 3 4 4 5 5 3 4 4 3 5 3 5 5 5

关于r - 如何从 rpart 对象获取新观察的终端节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29304349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com