2016-06-30 18 views
0

RのrandomForest関数は、54個未満のカテゴリのカテゴリ型予測子しか処理できないことを理解し、感謝します。しかし、カテゴリー別予測変数を54カテゴリ未満に絞り込むと、まだエラーが発生します。私がstackoverflowのカテゴリの予測変数の制限について見た唯一の質問は、このカテゴリの制限を回避する方法ですが、関数の制限に従うようにカテゴリの数を調整しようとしていますが、まだエラーが発生します。randomForestカテゴリ型予測変数の制限

次のスクリプトは、「職業」を予測できるようにデータフレームを作成します。当然のことながら、 'college_id'変数のために 'df'にrandomForest()を実行しようとすると、「53以上のカテゴリのカテゴリカル予測子を処理できません」というエラーが表示されます。

しかし、トップ40のカレッジIDだけを含むデータセットをトリムすると、同じエラーが発生します。 'df2'データフレームに現在40個しか登録されていないにもかかわらず、すべてのカテゴリを保持する基本的なデータフレームの概念が欠落していますか?私が使用できる回避策オプションは何ですか?

library(dplyr) 
library(randomForest) 

# create data frame 
df <- data.frame(profession = sample(c("accountant", "lawyer", "dentist"), 10000, replace = TRUE), 
      zip = sample(c("32801", "32807", "32827", "32828"), 10000, replace = TRUE), 
      salary = sample(c(50000:150000), 10000, replace = TRUE), 
      college_id = as.factor(c(sample(c(1001:1040), 9200, replace = TRUE), 
             sample(c(1050:9999), 800, replace = TRUE)))) 


# results in error, as expected 
rfm <- randomForest(profession ~ ., data = df) 


# arrange college_ids by count and retain the top 40 in the 'df' data frame 
sdf <- df %>% 
    dplyr::group_by(college_id) %>% 
    dplyr::summarise(n = n()) %>% 
    dplyr::arrange(desc(n)) 
sdf <- sdf[1:40, ] 
df2 <- dplyr::inner_join(df, sdf, by = "college_id") 
df2$n <- NULL 


# confirm that df2 only contains 40 categories of 'college_id' 
nrow(df2[which(!duplicated(df2$college_id)), ]) 


# THIS IS WHAT I WANT TO RUN, BUT STILL RESULTS IN ERROR 
rfm2 <- randomForest(profession ~ ., data = df2) 

答えて

1

私はあなたの変数にまだすべての要因レベルがあったと思います。再度フォレストに合う前に次の行を追加してみてください:

+0

これはそれでした...ありがとう! – bshelt141

関連する問題