将 party 包用于决策树图时,导致此错误消息的原因是什么?

What is causing this error message when using the party package for a decision tree plot?

我正在使用 party 包绘制 decision tree。当 运行 plot(tree) 函数时,它绘制 decision tree。但是,我想更改 node labels 的字体大小,我正在使用以下代码:

tree<-ctree(Attrition~MaritalStatus+Age_group,data=traindf1)
plot(tree)
text(tree, cex = 0.5)

当运行最后一行代码时,我得到以下错误信息:

Error in as.double(y) : 
   cannot coerce type 'S4' to vector of type 'double'

我看过这个 post 但它似乎与另一个包有关: as.double(y) 中的错误:无法将类型 'S4' 强制转换为类型 'double' 的向量

我该如何解决这个问题?

请注意,您可能应该使用 partykit 而不是 party,因为前者在调整树的图形方面提供了更大的灵活性。还要注意 partypartykit 不应一起使用,因为 ctree 对象在 partykitparty.[=33 中是不同的=]

partykit::ctreeparty::ctree 都没有 adding/changing 文本标签的 text 方法。也许您在阅读 rpart 时遇到了 plot + text 语法,这是一个完全不同的 R 包,用于递归 partitioning/classification 和决策树。

这是两种方法的并排示例

partykit::ctree

library(partykit)
fit <- ctree(Ozone ~ ., data = airquality[complete.cases(airquality), ])

您可以通过gp函数参数更改字体大小,例如

plot(fit, gp = gpar(fontsize = 4))

rpart::rpart

library(rpart)
fit <- rpart(Ozone ~ ., data = airquality[complete.cases(airquality), ])
plot(fit)
text(fit)

这里可以通过text中的cex参数来改变字体大小。