R:rpart:将rpart fit对象转换为函数

时间:2016-05-03 20:29:28

标签: r rpart

我可以使用rpart预测(如下所示),

library(rpart)

datpred <-tail(car.test.frame,10)
fit <- rpart(Mileage ~ Weight+Price, car.test.frame)
predict(fit,newdata=datpred)
plot(fit, uniform=TRUE)
text(fit, use.n=TRUE, all=TRUE, cex=.8)
objects(fit)

有没有一种简单的方法可以将fit对象转换为一个简单的函数,该函数只包含数据输入上的拆分逻辑,然后输出预测值?

原因是我可以在单个脚本中使用该函数,而无需从外部源加载适合对象。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用dput()将对象保存到文件中,然后使用dget()进行阅读:

dput(fit, 'fit.dput')
rm(fit)
fit <- dget('fit.dput')

答案 1 :(得分:1)

您感兴趣的输出,即变量名称和分割树的值,由labels.rpart函数汇编:

labels(fit)
#-----------
[1] "root"         "Weight>=2568" "Weight>=3088" "Weight< 3088"
[5] "Weight>=2748" "Weight< 2748" "Weight< 2568"

&#39;分裂&#39;拟合对象的元素是存储切割点的位置(在&#34;索引&#34;列中):

> fit$splits
       count ncat   improve  index adj
Weight    60    1 0.5953491 2567.5   0
Weight    45    1 0.5045118 3087.5   0
Weight    23    1 0.1476996 2747.5   0

您可以查看代码,但如果您还不知道该怎么做,那么这不是一个易于理解的功能:

> methods(labels)
[1] labels.default     labels.dendrogram* labels.dist*      
[4] labels.lm*         labels.rpart*      labels.survreg    
[7] labels.terms*     
see '?methods' for accessing help and source code
> getAnywhere(labels.rpart)