glmnet Fehler für die Logistische regression und binomialer

Ich bekomme diese Fehlermeldung, wenn Sie versuchen, um fit glmnet() mit family="binomial", für die Logistische Regression Passform:

> data <- read.csv("DAFMM_HE16_matrix.csv", header=F)
> x <- as.data.frame(data[,1:3])
> x <- model.matrix(~.,data=x)
> y <- data[,4]

> train=sample(1:dim(x)[1],287,replace=FALSE)

> xTrain=x[train,]
> xTest=x[-train,]
> yTrain=y[train]
> yTest=y[-train]

> fit = glmnet(xTrain,yTrain,family="binomial")

Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs,  : 
one multinomial or binomial class has 1 or 0 observations; not allowed

Jegliche Hilfe würde sehr geschätzt werden - ich habe im internet gesucht und wurden nicht in der Lage, zu finden alles, was hilft,

EDIT:

Hier ist, was Daten Aussehen:

> data
          V1       V2    V3      V4
1   34927.00   156.60 20321  -12.60
2   34800.00   156.60 19811  -18.68
3   29255.00   156.60 19068    7.50
4   25787.00   156.60 19608    6.16
5   27809.00   156.60 24863   -0.87
...
356 26495.00 12973.43 11802    6.35
357 26595.00 12973.43 11802   14.28
358 26574.00 12973.43 11802    3.98
359 25343.00 14116.18 11802   -2.05
  • Sind Sie sicher, dass Ihre yTrain enthält mindestens 2 unterschiedliche Werte?
  • Absolut. Es gibt 287 unterschiedliche Werte und ich habe überprüft, um sicherzustellen, dass es nicht eine matrix und ein Vektor.
  • Ich habe auch versucht nur mit glmnet(x,y,family="binomial"), brachte den gleichen Fehler.
  • Gut, hängen an; Ihre V4 variable scheint kontinuierlich zu sein, nicht Binär. Sie können nicht passen Sie ein logistisches Modell mit.
  • ahhhhhh! gotcha, das hat funktioniert (und Sinn macht). Ich konnte laufen glmnet() wenn Familie <> "binomial", aber es brach, als ich es. Ich fügte diesen code und es funktionierte: trigger = 5 y <- ifelse(Daten$V4 > trigger,1,0)
  • setzen Sie diese als Kommentar und ich werde es akzeptieren, wie die Antwort
  • Dieser Fehler kann auch auftreten, legitim (wenn die Ziel-variable ein Faktor ist), z.B. im Lebenslauf.glmnet, für einige Entscheidungen, die von random seed, esp. mit schweren Klasse Ungleichgewichte, wenn man in der CV-Falten tatsächlich am Ende mit nur 0 oder 1 Beobachtung. Da tritt nach dem Zufallsprinzip, haben Sie, um ordnungsgemäß zu behandeln es.
  • Ich Laufe in das gleiche problem, wo hast du den code hinzufügen "trigger = 5 y <- ifelse(Daten$V4 > trigger,1,0)" ?
  • wenn Sie eine 'binomial', dann müssen Sie sicherstellen, dass Ihre Daten ist Binär (entweder 1 oder 0) und nicht kontinuierliche variable. So fügen Sie die cutoff-und switch-zu-Binär-nach dem Import der Daten aber beforerunning das Modell

InformationsquelleAutor groutgauss | 2015-05-01
Schreibe einen Kommentar