如何从R中提取RandomForest以用于生产?

时间:2012-03-17 22:55:17

标签: java r random-forest alglib

我有一个成功的随机森林模型,我想将它集成到另一个软件中,我知道我可以使用一些库(比如Java中的fastRF或ALGLIB的DecisionForest用于其他语言)但我如何使用“模型”训练在R?我必须用新语言重新训练它?

另一种观点是以某种方式提取它,但我不知道该怎么做......

任何帮助将不胜感激

提前致谢

2 个答案:

答案 0 :(得分:13)

查看pmml包,它为各种模型生成PMML,包括RandomForest。一个基本的例子:

#?randomForest
library(randomForest)
library(pmml)
set.seed(131)
ozone.rf <- randomForest(Ozone ~ ., data=airquality, mtry=3,importance=TRUE, na.action=na.omit)
print(ozone.rf)
ozone.rf.pmml <- pmml(ozone.rf)

答案 1 :(得分:2)

randomForest对象具有关于对象中每棵树的所有信息。每棵树都不是特别复杂,尽管它可能令人困惑。

iris.rf <- randomForest(Species ~ ., data=iris, importance=TRUE,
                         proximity=TRUE)
> names(iris.rf$forest)
  [1] "ndbigtree"  "nodestatus" "bestvar"    "treemap"    "nodepred"  
  [6] "xbestsplit" "pid"        "cutoff"     "ncat"       "maxcat"    
  [11] "nrnodes"    "ntree"      "nclass"     "xlevels"   

要了解如何使用R之外的林,您必须查看源代码。下载randomForest的源包,解压缩tar.gz并查看src目录。在rf.c中,您将看到函数classForest(对于回归,请查看regrf.c中的regForest)。看一下R函数predict.randomForest来看看它是如何被调用的。您可能必须使用getAnywhere(“predict.randomForest”)在R中查看它。

需要相当多的时间来提取R信息并在另一个包中进行预测,因此在实际执行此操作之前,您必须仔细考虑。重新安装您打算使用的软件可能会更直接。