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?

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 

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)


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.