2014-02-07 22 views
8

ich mit glmnet ein Problem habe, dass ich erhalte immer die FehlermeldungLasso Fehler in glmnet NA/NaN/Inf

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

Im Folgenden werde ich den Fehler mit dem Datensatz ‚Iris‘ replizieren kann, aber hier ist der vereinfachte Code für meine besonderen Daten:

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

hier ist etwas, das man leicht reproduzieren:

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) 

Dank viel jeder!

Antwort

10

Mit as.matrix Sie die numerischen Werte in Zeichen werden Nötigung, weil Sie verlassen in „Species“:

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" 

auch in der Regel eine sehr schlechte Idee attach/detach zu verwenden, und wenn Sie nicht wissen, warum Sie sollte es nicht verwenden, dann Sie am meistendefinitiv sollte nicht verwenden Sie es.

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 
Verwandte Themen