【问题标题】:R random forest using cforest, how to plot treeR使用cforest的随机森林,如何绘制树
【发布时间】:2014-05-25 02:07:25
【问题描述】:

我使用cforest创建了随机森林模型

library("party")    
crs$rf <- cforest(as.factor(Censor) ~ .,
  data=crs$dataset[crs$sample,c(crs$input, crs$target)],
  controls=cforest_unbiased(ntree=500, mtry=4))
cf <- crs$rf 
tr <- party:::prettytree(cf@ensemble[[1]], names(cf@data@get("input")))  
#tr

plot(new("BinaryTree", tree=tr, data=cf@data, responses=cf@responses))

绘制树时出现错误

错误:没有为“strwidth/height”单位提供字符串

任何帮助如何克服这个错误?

【问题讨论】:

标签: r random-forest


【解决方案1】:

查看您的代码,我假设 crs 指的是数据框。美元符号可能是个问题(特别是 crs$rf)。如果 crs 确实是一个数据框,那么 $ 将告诉 R 通过使用通常的列表索引设备从数据框内提取项目。这可能与生成随机森林的调用相冲突,并导致错误。您可以通过以下方式解决此问题:

crs_rf <- cforest(as.factor(Censor) ~ ., .....

这将创建随机森林对象。这将取代:

crs$rf <- cforest(as.factor(Censor) ~ ., ......

作为参考,如果这不能解决问题,我想向您推荐斯坦福大学的优秀指南that covers random forests。他们确实有示例展示如何使用派对包。为了使故障排除更容易,我可能会建议像他们在指南中那样分开通话。例如(取自提供的指南),首先,设置控件:

data.controls <- cforest_unbiased(ntree=1000, mtry=3) 

然后拨打电话:

data.cforest <- cforest(Resp ~ x + y + z…, data = mydata, controls=data.controls)

然后在调用成功后生成绘图。如果您在使用 cforest() 绘制树木时需要帮助,您可能会考虑查看这个优秀的资源(因为我认为问题的根源在于您的绘图函数调用):http://www.r-bloggers.com/a-brief-tour-of-the-trees-and-forests/

【讨论】:

  • 我尝试了两种建议的解决方案,但仍然有相同的错误,这是新代码 data.controls
  • 让我们暂时忘记绘图。您能否一次将调用 1 放入 R 中,运行它们,并在消息中显示输出。另外,如何将 as.factor(Censor) 更改为 as.factor(crs_rf$Censor)
  • 先显示这个调用的输出:data.controls
  • 然后,在下面显示这个调用的输出:crs_rf
  • 另外,如果你输入crs,输出是什么?我关心这一行:data=crs$dataset[crs$sample,c(crs$input, crs$target)]。检查运行时是否出现错误。
猜你喜欢
  • 2017-01-12
  • 2017-03-25
  • 2022-01-12
  • 2020-09-18
  • 2019-07-25
  • 2018-12-09
  • 1970-01-01
  • 2019-05-04
相关资源
最近更新 更多