web-dev-qa-db-ja.com

glmnet NA / NaN / Infのなげなわエラー

エラーメッセージが表示され続けるという点でglmnetに問題があります

"Error in elnet(x, is.sparse, ix, jx, y, weights, offset, type.gaussian,  : NA/NaN/Inf in foreign function call (arg 5)
In addition: Warning message:
In elnet(x, is.sparse, ix, jx, y, weights, offset, type.gaussian,  : NAs introduced by coercion"

以下では、「iris」データセットを使用してエラーを再現できますが、特定のデータの簡略化されたコードは次のとおりです。

vars <- as.matrix(ind.vars)
lasso <- glmnet(vars, y=cup98$TARGET_D, alpha=1)

簡単に再現できるものは次のとおりです。

data(iris)
attach(iris)
x <- as.matrix(data.frame(Sepal.Width, Petal.Length, Petal.Width, Species))
y <- Sepal.Length
lasso <- glmnet(x,y=y, alpha=1)

みなさん、ありがとうございました!

10
Jason

as.matrix「種」を残しているため、数値を文字に強制変換しています。

str(as.matrix(iris[, c('Sepal.Width', 'Petal.Length', 'Petal.Width', 'Species')]))
 chr [1:150, 1:4] "3.5" "3.0" "3.2" "3.1" "3.6" "3.9" ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:4] "Sepal.Width" "Petal.Length" "Petal.Width" "Species"

また、通常は非常に使用するのは悪い考えですattach/detach、そしてなぜそれを使うべきでないのかわからないなら、あなたはほとんど間違いなくすべきないそれを使うべきです。

data(iris); require(glmnet)
x<-as.matrix(iris[, c('Sepal.Width', 'Petal.Length', 'Petal.Width')])
y<-iris$Sepal.Length
lasso<-glmnet(x,y=y, alpha=1); lasso   # no error
12
42-