R: Random Forest lancia NaN / Inf nell'errore di "richiamo della funzione esterna" nonostante nessuna NaN nel set di dati [chiuso]


29

Sto usando il cursore per eseguire una foresta casuale convalidata in modo incrociato su un set di dati. La variabile Y è un fattore. Non ci sono NaN, Inf o NA nel mio set di dati. Tuttavia, quando eseguo la foresta casuale, ottengo

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

Qualcuno ha idee su se questo errore sia causato dalle NA introdotte dalla coercizione? In tal caso, come posso evitare tale coercizione?

Risposte:


36

Ci devono essere alcune funzionalità nel tuo set di allenamento con classe "char".

Per favore controlla questo

> 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 per aggiungere: se la funzionalità è effettivamente categorica, può ancora essere inclusa convertendola in un fattore, ad es. blah <-as.factor (blah)
P.Windridge,

14

Probabilmente la causa è che hai alcune variabili di carattere nel tuo frame di dati.

Converti tutte le variabili di carattere in fattore in una riga:

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


2
Non avevo pensato di usarlo mutate_if()per questo ... grazie!
Andrew Brēza,

3

Come mostrato nell'avvertimento, si sono verificati 28 errori che sono risultati essere il numero di colonne con tipi di dati carattere ("chr"). Forzare queste colonne su fattori che hanno consentito l'avvio della corsa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.