2015-11-27 27 views
0

我想從使用R獲得的隨機森林模型中生成PMML。我使用randomForest包4.6-12和R的最後一個版本,但是每次我嘗試生成PMML獲取錯誤。這裏是代碼:R中產生隨機森林的PMML問題

data_train.rf <- randomForest(TARGET ~ ., data = train, ntree=100, na.action=na.omit, importance=TRUE) 

pmml_file = pmml(data_train.rf) 
[1] "Now converting tree 1 to PMML" 
Error in append.XMLNode(rfNode, splitNode) : object 'splitNode' not found 

我一直沒能找到問題的根源,有什麼想法? 由於提前,

阿爾瓦羅

+0

我投票結束這個問題作爲題外話,因爲它屬於SO網站。 – Dawny33

回答

0

看起來像變量splitNode尚未初始化的「PMML」包內。初始化途徑取決於分割變量的數據類型(例如數字,邏輯,因子)。請參閱「pmml」包內的/R/pmml.randomForest.R文件的源代碼。

那麼,您的train data.frame對象中的列是什麼?

或者,您可以試用r2pmml package,因爲它在處理randomForest模型類型方面要好得多。

0

pmml代碼假設變量的數據類型是數字,簡單邏輯或因子。如果你使用的數據是其他類型的,它不會工作;例如DateTime。 如果您的問題是可重現的,這將有所幫助;理想情況下,您會提供您使用的數據集。如果沒有,至少可以對其進行抽樣或對其進行描述......也許可以總結一下。 您還應該考慮直接向軟件包維護者發送電子郵件。

+0

嗨,我測試了所有的變量,它們都是數字,因子或二進制,所以這不是問題。 – ARB

0

我可能找到了這個問題的根源。在我的數據集中,我有大約500000個事件和30個變量,這些變量中的10個是因子,其中一些在一些事件中具有較弱的人口密度。

我建立了幾個隨機森林模型,每次包括模型的額外變量。我開始向模型中添加沒有問題的數值變量來生成PMML,同樣的情況發生在大量填充所有級別的分類變量上,當我試圖包含具有弱填充級別的分類變量時,我得到以下錯誤:

Error in append.XMLNode(rfNode, splitNode) : object 'splitNode' not found 

我想這個問題的根源在於,在某些情況下,當構建一個樹狀結構的層次較弱時,沒有拆分,因爲只有一個案例,儘管randomForest包知道如何處理這些案例, pmml包沒有。

0

我的測試表明,當分類變量的級數超出randomForest函數允許的最大數時,就會出現這個問題。在森林子列表中定義的拆分不再是分類定義對分類對象所需的正整數。減少問題的級別數量。