R: Bosque aleatorio que arroja NaN / Inf en el error de "llamada de función externa" a pesar de que no hay NaN en el conjunto de datos [cerrado]

29

Estoy usando caret para ejecutar un bosque aleatorio validado cruzado sobre un conjunto de datos. La variable Y es un factor. No hay NaN's, Inf's o NA's en mi conjunto de datos. Sin embargo, cuando ejecuto el bosque aleatorio, obtengo

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

¿Alguien tiene ideas sobre si este error es causado por la NA introducida por la coerción? Si es así, ¿cómo puedo evitar tal coerción?

Info5ek
fuente

Respuestas:

36

Debe haber algunas características en su conjunto de entrenamiento con la clase 'char'.

Por favor, chequee esto

> 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 
Pankaj Sharma
fuente
Solo para agregar: si la característica es realmente categórica, aún se puede incluir convirtiéndola en un factor, por ejemplo. bla <-as.factor (bla)
P.Windridge
14

Probablemente la causa es que tiene algunas variables de caracteres en su marco de datos.

Convierta todas las variables de caracteres en factor en una línea:

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

pablo_sci
fuente
2
No había pensado en usar mutate_if()para esto ... ¡gracias!
Andrew Brēza
3

Como se muestra en la advertencia, hubo 28 errores que resultaron ser el número de columnas con tipos de datos de caracteres ("chr"). Forzar estas columnas a los factores permitidos para que comience la ejecución.

Info5ek
fuente