Ich versuche, ein Modell mit glmnet zu erstellen, (derzeit mit cv, um den Lambda-Wert zu finden), und ich bekomme einen Fehler NA/NaN/Inf in foreign function call (arg 5)
. Ich glaube, das hat etwas mit den NA-Werten in meinem Datensatz zu tun, denn wenn ich alle Datenpunkte mit NAs lösche, wird der Befehl erfolgreich ausgeführt.R Fehler in glmnet: NA/NaN/Inf in fremden Funktionsaufruf
Ich hatte den Eindruck, dass glmnet kann NA-Werte verarbeiten. Ich bin nicht sicher, wo der Fehler herkommt:
> 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)
Der Datensatz sieht wie folgt aus:
> 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
Dies ist auch der Fehler, den ich habe. Wie hast du das Problem gelöst? – user2806363
Einige verschiedene Lösungen existieren: 1) Der Ansatz, den ich nahm, war, eine zweite Spalte col_x_is_na zu erstellen. Wo die Spalte NA ist, wird diese sekundäre Spalte auf wahr gesetzt. Nachdem Sie diese zweite Spalte erstellt haben, können Sie alle NA-Werte auf 0 setzen. Die sekundäre Flag-Spalte gleicht die Werte in der ursprünglichen Spalte ab. 2) ausschließen diese Spalten 3) die Zellen mit NA-Werte imputieren 4) ein Paket verwenden, die NA-Werte verarbeiten können, zum Beispiel ada – mgoldwasser
Ich habe die gleiche Fehlermeldung ohne irgendwelche NA-Werte ... – citraL