web-dev-qa-db-ja.com

glmnetのRエラー:外部関数呼び出しのNA / NaN / Inf

Glmnetを使用してモデルを作成しようとしています(現在、cvを使用してラムダ値を検索しています)。エラーNA/NaN/Inf in foreign function call (arg 5)が発生します。 NAを使用してすべてのデータポイントを削除すると、コマンドが正常に実行されるため、これはデータセットのNA値と関係があると思います。

Glmnet can NA値を処理するという印象を受けました。エラーがどこから来ているのかわかりません:

> 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)

データセットは次のようになります。

> 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
12
mgoldwasser

GlmnetはNA値を処理できないようです!

9
mgoldwasser

追加:データフレームにNAがなくてもこのエラーが発生する場合は、model.matrix関数を使用して入力行列を定義していない可能性があります。

x <- model.matrix( ~ ., Data)

私はそれがあなたの質問に対する答えではないことを知っていますが、私はあなたと同じエラーがあり、この解決策を見つけました。だからそれは他の人に役立つかもしれません。

4
Peter Dieter