R erreur dans glmnet: NA/NaN/Inf étrangères appel de fonction
Je suis en train de créer un modèle à l'aide de glmnet, (actuellement à l'aide de cv pour trouver la valeur lambda) et j'obtiens une erreur NA/NaN/Inf in foreign function call (arg 5)
. Je crois que cela a quelque chose à voir avec la NA valeurs dans mon jeu de données, parce que quand j'ai supprimer tous les points de données avec des NAs de la commande s'exécute correctement.
J'étais sous l'impression que glmnet peut poignée NA valeurs. Je ne suis pas sûr de l'endroit où l'erreur provient de:
> res <- cv.glmnet(features.mat, as.factor(tmp[,"outcome"]), family="binomial")
Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs, :
NA/NaN/Inf in foreign function call (arg 5)
Le jeu de données ressemble à quelque chose comme ceci:
> head(features.mat)
6 x 8 sparse Matrix of class "dgCMatrix"
a b c e f g h i
1 1 1 138 NA NA 15 NA .
4 1 3 171 NA NA 17 NA .
7 1 1 156 NA NA 5 NA .
8 1 4 97 NA NA 7 NA .
9 1 1 219 NA NA 11 NA .
10 1 . 263 NA NA 20 NA .
> head(as.factor(tmp[,"outcome"]))
[1] 0 0 0 0 0 0
Levels: 0 1
OriginalL'auteur mgoldwasser | 2014-02-18
Vous devez vous connecter pour publier un commentaire.
Il semble que glmnet ne peut pas gérer NA des valeurs!
Différentes solutions existent: 1) L'approche que j'ai adoptée a été de créer un deuxième colonne col_x_is_na. Lorsque la colonne est de NA, ce deuxième colonne prend la valeur true. Après la création de ce deuxième colonne, vous pouvez définir tous les NA les valeurs à 0. Le secondaire drapeau de la colonne sera de compenser les valeurs dans la colonne d'origine. 2) exclure ces colonnes 3) d'imputer les cellules avec NA les valeurs 4) utilisez un package qui peut gérer NA valeurs, par exemple, ada
J'ai le même message d'erreur sans NA valeurs...
J'ai eu la même erreur d'avoir quelques catégorique caractéristiques (chaîne de valeurs dans la matrice)
OriginalL'auteur mgoldwasser
Outre:
Dans le cas où vous obtenez cette erreur, sans avoir de NA dans votre dataframe, vous avez probablement n'avez pas défini votre matrice d'entrée avec le modèle.la matrice de la fonction.
Je sais que ce n'est pas la réponse à votre question, mais j'ai eu la même erreur que vous, et a trouvé cette solution. Il pourrait donc être utile pour les autres.
OriginalL'auteur Peter Dieter