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)
これはそれでした...ありがとう! – bshelt141