将决策树的输出保存到文本文件中

时间:2015-06-25 23:43:27

标签: r decision-tree rpart

我正在寻找一种在R中保存决策树输出的方法。以下是R中的简单决策树代码:

library(rpart)
data(kyphosis)
fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)

这是fit的价值:

1) root 81 17 absent (0.79012346 0.20987654)  
   2) Start>=8.5 62  6 absent (0.90322581 0.09677419)  
     4) Start>=14.5 29  0 absent (1.00000000 0.00000000) *
     5) Start< 14.5 33  6 absent (0.81818182 0.18181818)  
      10) Age< 55 12  0 absent (1.00000000 0.00000000) *
      11) Age>=55 21  6 absent (0.71428571 0.28571429)  
        22) Age>=111 14  2 absent (0.85714286 0.14285714) *
        23) Age< 111 7  3 present (0.42857143 0.57142857) *
   3) Start< 8.5 19  8 present (0.42105263 0.57894737) *

我尝试了savedumpdput,但它们不起作用并更改了树的格式。有没有方法将树保存到文本文件中保存? sink对我不起作用。

2 个答案:

答案 0 :(得分:1)

如果您想保留save()以供将来使用,

load()fit应该有效。尝试像

这样的东西
is.list(fit)                       # check it is there 
save(fit,file="thisexample.txt", ascii=TRUE)
rm(fit)                            # to remove fit object
is.list(fit)                       # check it is not there
load(file="thisexample.txt")
is.list(fit)                       # check it is there

您应该看到[1] TRUE然后Error: object 'fit' not found然后[1] TRUE,您将继续使用fit

我可能误解了你要保存的内容,在这种情况下使用Ricky的答案,而不是文件名

sink("exampletree.txt")
print(fit)
sink()

答案 1 :(得分:1)

我使用了sink,它对我有用。

sink("clipboard")  # works in Windows, substitute "clipboard" for file name
print(fit)
sink()

从剪贴板粘贴,我得到了

n= 81 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 81 17 absent (0.79012346 0.20987654)  
   2) Start>=8.5 62  6 absent (0.90322581 0.09677419)  
     4) Start>=14.5 29  0 absent (1.00000000 0.00000000) *
     5) Start< 14.5 33  6 absent (0.81818182 0.18181818)  
      10) Age< 55 12  0 absent (1.00000000 0.00000000) *
      11) Age>=55 21  6 absent (0.71428571 0.28571429)  
        22) Age>=111 14  2 absent (0.85714286 0.14285714) *
        23) Age< 111 7  3 present (0.42857143 0.57142857) *
   3) Start< 8.5 19  8 present (0.42105263 0.57894737) *

测试时将"clipboard"更改为文本文件名,并且上面的内容相同。

我想知道你sink对你有用的评论,问题/输出是什么?