Ошибка с RandomForest в R из-за "слишком много категорий" - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь обучить модель RF в R, но когда я пытаюсь определить модель:

rf <- randomForest(labs ~ .,data=as.matrix(dd.train))

Это дает мне ошибку:

Error in randomForest.default(m, y, ...) :
  Can not handle categorical predictors with more than 53 categories.

Любая идея что это может быть?

И нет, прежде чем сказать: «У вас есть некоторая переменная категории c с более чем 53 категориями». Нет, все переменные, кроме labs, являются цифрами c.

Тим Бигелейзен: Прочитайте последнюю строку моего вопроса, и вы поймете, почему она не совпадает с той, которую вы связываете!

1 Ответ

3 голосов
/ 20 января 2020

Отредактировано для отслеживания адресов из OP

Я считаю, что использование as.matrix в этом случае неявно создает факторы. Это также не обязательно для этих пакетов. Вы можете сохранить его как фрейм данных, но вам нужно будет убедиться, что любые неиспользуемые уровни факторов отброшены с помощью droplevels (или чего-то подобного). Существует множество причин, по которым в вашем наборе данных может быть неиспользованный фактор, но распространенным является пропущенное наблюдение.

Ниже приведен краткий пример, который воспроизводит вашу ошибку:

library('randomForest')

#making a toy data frame
x <- data.frame('one' = c(1,1,1,1,1,seq(50) ),
       'two' = c(seq(54),NA),
       'three' = seq(55),
       'four' = seq(55) )

x$one <- as.factor(x$one)

x <- na.omit(x) #getting rid of an NA. Note this removes the whole row.

randomForest(one ~., data = as.matrix(x)) #your first error
randomForest(one ~., data = x) #your second error

x <- droplevels(x)

randomForest(one ~., data = x) #OK
...