2013-06-27 7 views
5

जब नए डेटा वर्गीकृत करने के लिए (या यहां तक ​​कि मूल प्रशिक्षण डेटा) randomForest के उत्पादन में उपयोग करने के लिए कोशिश कर रहा है, मैं निम्नलिखित त्रुटि मिलती है:नए कारक स्तरों प्रशिक्षण डेटा में मौजूद नहीं

> res.rf5 <- predict(model.rf5, train.rf5) 
Error in predict.randomForest(model.rf5, train.rf5) : 
    New factor levels not present in the training data 

क्या इस त्रुटि करता है क्या मतलब है? यह त्रुटि तब भी होती है जब मैं उसी डेटा की भविष्यवाणी करने का प्रयास करता हूं जिसे मैं प्रशिक्षित करता था?

त्रुटि का पुनरुत्पादन करने के लिए उपयोग किया जा सकता है एक छोटा सा उदाहरण नीचे दिया गया है।

train.rf5 <- structure(
    list(A = structure(c(2L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 3L), 
        .Label = c("(-0.1,19.9]", "(19.9,40]", "(80.1,100]"), 
        class = c("ordered", "factor")), 
     B = structure(c(3L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 4L), 
        .Label = c("1", "2", "4", "5"), 
        class = c("ordered", "factor")), 
     C = structure(c(1L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L), 
        .Label = c("FALSE", "TRUE"), 
        class = "factor")), 
    .Names = c("A", "B", "C"), 
    row.names = c(7L, 8L, 10L, 11L, 13L, 15L, 16L, 17L, 18L, 19L), 
    class = "data.frame") 

#    A B  C 
# 7 (19.9,40] 4 FALSE 
# 8 (-0.1,19.9] 1 FALSE 
# 10 (-0.1,19.9] 1 TRUE 
# 11 (-0.1,19.9] 1 FALSE 
# 13 (-0.1,19.9] 1 FALSE 
# 15 (-0.1,19.9] 1 TRUE 
# 16 (80.1,100] 2 TRUE 
# 17 (-0.1,19.9] 1 FALSE 
# 18 (-0.1,19.9] 1 FALSE 
# 19 (80.1,100] 5 TRUE 

require(randomForest) 
model.rf5 <- randomForest(C ~ ., data = train.rf5) 
res.rf5 <- predict(model.rf5, train.rf5) # Causes error 

मैं इतने पर कुछ संभवतः संबंधित प्रश्नों देखते हैं, लेकिन मुझे नहीं लगता कि वे अपनी समस्या सीधे

  1. dropping factor levels in a subsetted data frame in R
  2. Random forest package in R shows error during prediction() if there are new factor levels present in test data. Is there any way to avoid this error?

1 के विपरीत का समाधान करते हैं), मुझे क्या करना ऐसे कारक स्तर नहीं हैं जो डेटा में प्रदर्शित नहीं होते हैं, और 2 के विपरीत), मेरी ट्रेन और परीक्षण डेटा में कारक स्तर समान हैं।

संपादित करें: अतिरिक्त जानकारी:

sessionInfo() 
R version 3.0.1 (2013-05-16) 
Platform: x86_64-pc-linux-gnu (64-bit) 

locale: 
[1] LC_CTYPE=en_US.UTF-8  LC_NUMERIC=C    
[3] LC_TIME=en_US.UTF-8  LC_COLLATE=en_US.UTF-8  
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 
[7] LC_PAPER=C     LC_NAME=C     
[9] LC_ADDRESS=C    LC_TELEPHONE=C    
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] randomForest_4.6-7 

loaded via a namespace (and not attached): 
[1] tools_3.0.1 
+0

मैं शर्त लगाता हूं कि इसका आदेश दिया गया कारकों के साथ कुछ करना है। –

उत्तर

5

मैं अपने अटकलें हैं कि आदेश दिया कारकों समस्या के स्रोत थे परीक्षण किया है, और जब केवल एक चीज मैं क्या वर्गों से हटाने "का आदेश दिया है" कोई त्रुटि मिलती है उस संरचना का। मैं प्रलेखन में नहीं देखता कि आदेश दिया गया कारकों की अनुमति नहीं है, लेकिन मैं यह भी नहीं देखता कि उन्हें विशेष रूप से माना जाता था। यह संभव है कि यह पहले नहीं आया है। ऐसा लगता है कि ऑर्डरिंग अतिरिक्त जटिलताओं को लागू करेगी और यदि आप इसके लिए जिम्मेदार होने का आदेश चाहते हैं तो आप आरएफ एल्गोरिदम में as.numeric(.) "स्कोर" की पेशकश कर सकते हैं।

+0

धन्यवाद डीडब्ल्यूएन, मैं 2008 से एक पुराना धागा देखता हूं जो संबंधित है, यह एक ही मुद्दा हो सकता है। https://stat.ethz.ch/pipermail/r-help/2008-April/160833.html – cyang

+0

अहह। ऐसा लगता है कि यह एंडी के रडार से निकल गया। मुझे आशा है कि आदेशित कारक से प्राप्त स्कोर वैरिएबल का उपयोग करने के लिए मेरे सुझाव में अभी भी योग्यता है। –

संबंधित मुद्दे