R: Random Forest lançant NaN / Inf dans l'erreur «appel de fonction étrangère» malgré l'absence de NaN dans l'ensemble de données [fermé]


29

J'utilise caret pour exécuter une forêt aléatoire validée de façon croisée sur un ensemble de données. La variable Y est un facteur. Il n'y a pas de NaN, Inf ou NA dans mon jeu de données. Cependant, lors de l'exécution de la forêt aléatoire, j'obtiens

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

Quelqu'un a-t-il des idées pour savoir si cette erreur est causée par les AN introduits par la contrainte? Si oui, comment puis-je empêcher une telle coercition?

Réponses:


36

Il doit y avoir des fonctionnalités dans votre ensemble d'entraînement avec la classe «char».

S'il te plaît, vérifie cela

> 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 

Juste pour ajouter- si la fonctionnalité est réellement catégorique, elle peut toujours être incluse en la convertissant en un facteur, par exemple. blah <-as.factor (blah)
— P.Windridge

14

La cause est probablement que vous avez des variables de caractère dans votre bloc de données.

Convertissez toutes les variables de caractère en facteur sur une seule ligne:

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


2
Je n'avais pas pensé à utiliser mutate_if()pour ça ... merci!
— Andrew Brēza

3

Comme indiqué dans l'avertissement, il y avait 28 erreurs qui se trouvaient être le nombre de colonnes avec des types de données de caractères ("chr"). Forcer ces colonnes à des facteurs a permis au cycle de commencer.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.