R: Случайный лес, выбрасывающий NaN / Inf в ошибке «вызова сторонней функции», несмотря на отсутствие NaN в наборе данных [закрыто]


29

Я использую каретку, чтобы запустить перекрестный проверенный случайный лес по набору данных. Переменная Y является фактором. В моем наборе данных нет ни NaN, ни Inf, ни NA. Однако при запуске случайного леса, я получаю

Error in randomForest.default(m, y, ...) : 
  NA/NaN/Inf in foreign function call (arg 1)
In addition: There were 28 warnings (use warnings() to see them)
Warning messages:
1: In data.matrix(x) : NAs introduced by coercion
2: In data.matrix(x) : NAs introduced by coercion
3: In data.matrix(x) : NAs introduced by coercion
4: In data.matrix(x) : NAs introduced by coercion

У кого-нибудь есть идеи относительно того, вызвана ли эта ошибка НС принуждением? Если так, как я могу предотвратить такое принуждение?

Ответы:


36

В вашем тренировочном наборе должно быть несколько функций с классом «char».

Пожалуйста, проверьте это

> a <- c("1", "2",letters[1:5], "3")
> as.numeric(a)
[1]  1  2 NA NA NA NA NA  3
Warning message:
NAs introduced by coercion 

Просто чтобы добавить - если функция на самом деле категорична, ее все равно можно включить, преобразовав ее в коэффициент, например. бла <-а.фактор (бла)
П.Уиндридж

14

Вероятно, причина в том, что у вас есть некоторые символьные переменные в вашем фрейме данных.

Преобразуйте все символьные переменные в множители в одну строку:

library(dplyr) data_fac=data_char %>% mutate_if(is.character, as.factor)


2
Я не думал об использовании mutate_if()для этого ... спасибо!
Эндрю Бреза

3

Как показано в предупреждении, было 28 ошибок, которые оказались числом столбцов с символьными типами данных («chr»). Принуждение этих столбцов к факторам, разрешенным для запуска запуска.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.