9

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

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

任何帮助将不胜感激

提前致谢

4

2 回答 2

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)
于 2012-03-19T10:37:05.453 回答
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 信息并在另一个包中进行预测需要相当多的时间,因此在实际执行此操作之前,您必须仔细考虑。重新安装您打算使用的软件可能更直接。

于 2012-03-18T07:28:59.327 回答