2013-06-27 11 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 

私はSOにいくつかの可能性関連の質問を参照してください、私は、彼らが直接1とは異なり

  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?

を自分の問題を解決しないと思う)、私はデータには表現されていない因子レベルはなく、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

私が注文した要因は、問題の原因だったというのが私の憶測をテストし、私は唯一のものは、クラスから「注文」を削除しているときにエラーを取得していませんその構造のドキュメントでは、順序付けられた要素は許可されていませんが、具体的に考慮されているかどうかはわかりません。以前はこれが起きていない可能性があります。注文が複雑になり、注文を考慮したい場合は、RFアルゴリズムにas.numeric(.)の「得点」を提供することができます。

+0

ありがとうございましたDWin、2008年の古いスレッドが関連していますが、それは同じ問題かもしれません。 https://stat.ethz.ch/pipermail/r-help/2008-April/160833.html – cyang

+0

Ahah。アンディのレーダーを降りたようだ。順序付けられた要素から導かれたスコア変数を使用することを提案してもメリットがあることを願っています。 –

関連する問題