2012-03-17 20 views
8

我有一個成功的randomforest模型,我想將它集成到另一個軟件中,我知道我可以使用一些庫(如Java中的fastRF或其他語言的ALGLIB的DecisionForest),但我如何使用訓練過的「模型」 R'我必須用新語言重新訓練它?如何從R中提取RandomForest以用於生產?

另一種觀點是有點提取它,但我dont't知道該怎麼做...

任何幫助將不勝感激提前

感謝

回答

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) 
+0

感謝您的回答@Paolo,但是,在我有了PMML文件後,我該如何執行它? – nanounanue 2012-03-20 07:29:16

+1

如果答案對您有用,請點贊upvote! ;-)關於您的問題,您需要驗證您是否可以使用您將用於部署的語言導入pmml模型。 – Paolo 2012-03-20 08:14:11

+0

你是對的!該職位很有用,讓我投票。你能推薦一些支持PMML的語言或軟件嗎?再次感謝你的幫助。 – nanounanue 2012-03-20 16:31:05

2

的隨機森林對象已全部關於對象中每棵樹的信息。每棵樹都不是特別複雜,但它可能會讓人困惑。

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信息並在另一個包中進行預測,因此您必須考慮在你真正做到這一點之前仔細。改裝你打算使用的軟件可能會更直接。

+0

謝謝你的回答@rjad,所以,如果我理解正確,你的建議是重新訓練新軟件中的隨機森林,對嗎? – nanounanue 2012-03-20 07:30:17

+0

我認爲如果這樣做很簡單,這將是最簡單的方法。如果您提供了一些您想要使用的語言的詳細信息,可能會有所幫助。但是,請參閱下面的Paolo的建議。 – rjad 2012-03-20 09:59:19

+0

我嘗試在Java中實現它(最好),但在C++中也可以工作。再次感謝:) – nanounanue 2012-03-20 16:32:52