R随机森林使用cforest,如何绘制树

时间:2014-04-11 04:53:17

标签: r random-forest

我使用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))

绘制树时出错

  

错误:没有提供&#39; strwidth / height&#39;单元

如何克服此错误的任何帮助?

1 个答案:

答案 0 :(得分:0)

查看代码,我假设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/