【问题标题】:What is causing this error message when using the party package for a decision tree plot?将派对包用于决策树图时,导致此错误消息的原因是什么?
【发布时间】:2019-02-01 15:25:17
【问题描述】:

我正在使用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'

我看过这篇文章,但它似乎与另一个包有关: Error in as.double(y) : cannot coerce type 'S4' to vector of type 'double'

我该如何解决这个问题?

【问题讨论】:

  • 据我所知,您不能使用 text 添加/更改基于 party 对象的标签。绘制rpart::rpart 树状图时使用plot() + text() 语法,也许你混淆了两个R 包?
  • rdocumentation.org/packages/graphics/versions/3.5.1/topics/text。函数text 接受一个数字向量作为它的第一个参数,即double。您的 tree 可能是 S4 对象,因此出现错误。查看 party 文档以了解如何解决此问题或提供可重现的示例。

标签: r decision-tree party


【解决方案1】:

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

partykit::ctreeparty::ctree 都没有用于添加/更改文本标签的 text 方法。也许您在阅读 rpart 时遇到了 plot + text 语法,这是一个完全不同的 R 包,用于使用决策树进行递归分区/分类。

这是两种方法的并排示例

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参数更改字体大小。

【讨论】:

    猜你喜欢
    • 2017-02-20
    • 1970-01-01
    • 2016-04-13
    • 2019-02-28
    • 2020-09-10
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多