gpt4 book ai didi

r - 为R中的rpart/ctree包获取预测数据集的每一行的决策树规则/路径模式

转载 作者:行者123 更新时间:2023-12-04 06:51:22 25 4
gpt4 key购买 nike

我已经使用rpartctree在R中建立了决策树模型。
我还使用构建的模型预测了一个新的数据集,并获得了预测的概率和类。

但是,我想用一个字符串提取规则/路径,以供遵循的每个观察结果(在预测数据集中)。以表格格式存储此数据,我可以在不打开R的情况下以自动的方式解释原因的预测。

这意味着我想得到关注。

ObsID   Probability   PredictedClass   PathFollowed 
1 0.68 Safe CarAge < 10 & Country = Germany & Type = Compact & Price < 12822.5
2 0.76 Safe CarAge < 10 & Country = Korea & Type = Compact & Price > 12822.5
3 0.88 Unsafe CarAge > 10 & Type = Van & Country = USA & Price > 15988

我正在寻找的代码种类是
library(rpart)
fit <- rpart(Reliability~.,data=car.test.frame)

这是可能需要扩展为多行的内容
predResults <- predict(fit, newdata = newcar, type= "GETPATTERNS")

最佳答案

partykit软件包具有.list.rules.party()函数,该函数当前未导出,但可以利用它来完成您想做的事情。我们尚未导出的主要原因是,其输出类型在将来的版本中可能会更改。

要获得您在上面描述的预测,您可以执行以下操作:

pathpred <- function(object, ...)
{
## coerce to "party" object if necessary
if(!inherits(object, "party")) object <- as.party(object)

## get standard predictions (response/prob) and collect in data frame
rval <- data.frame(response = predict(object, type = "response", ...))
rval$prob <- predict(object, type = "prob", ...)

## get rules for each node
rls <- partykit:::.list.rules.party(object)

## get predicted node and select corresponding rule
rval$rule <- rls[as.character(predict(object, type = "node", ...))]

return(rval)
}

使用 iris数据和 rpart()的插图:
library("rpart")
library("partykit")
rp <- rpart(Species ~ ., data = iris)
rp_pred <- pathpred(rp)
rp_pred[c(1, 51, 101), ]
## response prob.setosa prob.versicolor prob.virginica
## 1 setosa 1.00000000 0.00000000 0.00000000
## 51 versicolor 0.00000000 0.90740741 0.09259259
## 101 virginica 0.00000000 0.02173913 0.97826087
## rule
## 1 Petal.Length < 2.45
## 51 Petal.Length >= 2.45 & Petal.Width < 1.75
## 101 Petal.Length >= 2.45 & Petal.Width >= 1.75

(为简洁起见,这里仅显示了每个物种的第一个观察结果。这对应于索引1、51和101。)

并使用 ctree():
ct <- ctree(Species ~ ., data = iris)
ct_pred <- pathpred(ct)
ct_pred[c(1, 51, 101), ]
## response prob.setosa prob.versicolor prob.virginica
## 1 setosa 1.00000000 0.00000000 0.00000000
## 51 versicolor 0.00000000 0.97826087 0.02173913
## 101 virginica 0.00000000 0.02173913 0.97826087
## rule
## 1 Petal.Length <= 1.9
## 51 Petal.Length > 1.9 & Petal.Width <= 1.7 & Petal.Length <= 4.8
## 101 Petal.Length > 1.9 & Petal.Width > 1.7

关于r - 为R中的rpart/ctree包获取预测数据集的每一行的决策树规则/路径模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29618490/

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