Predict-Funktion Fehler für Wahrscheinlichkeiten in glmnet?
Ich versuche zu prognostizieren, Wahrscheinlichkeiten in einem dataset mit glmnet
. Mein code lautet:
bank <- read.table("http://www.stat.columbia.edu/~madigan/W2025/data/BankSortedMissing.TXT",header=TRUE)
bank$rich<-sample(c(0:1), 233, replace=TRUE)
train=bank[1:200,];
test=bank[201:233,]
x=model.matrix(rich~., bank)[,-1]
cv.out=cv.glmnet(x, train$rich, alpha=0, family="binomial")
ridge.mod=glmnet(x, train$rich, alpha=0, family="binomial")
bank$rich <- NULL
newx = data.matrix(test$rich)
ridge.pred=predict(ridge.mod,newx=newx)
train = data[1:2500,];
test = data[2501:5088,];
x=model.matrix(Y~x1+x2+x3+x4+x5+x6, data)[,-1]
cv.out=cv.glmnet(x, data$Y, alpha=0, family="binomial")
bestlam=cv.out$lambda.min
ridge.mod=glmnet(x, data$Y, alpha=0, family="binomial")
test$Y <- NULL
newx = data.matrix(test)
ridge.pred = predict(ridge.mod,newx=newx, type="response")
Ich bekomme immer diese Fehlermeldung bei der Verwendung von Vorhersagen:
Fehler.matrix(cbind2(1, newx) %*% nbeta) :
Fehler bei der Bewertung das argument 'x' bei der Auswahl einer Methode für Funktion 'als.matrix': Fehler bei t(.Call(Csparse_dense_crossprod, y, t(x))) :
Fehler bei der Bewertung das argument 'x' bei der Auswahl einer Methode für Funktion 't': Fehler: Cholmod Fehler 'X und/oder Y haben falsche Dimensionen' bei der Datei ../MatrixOps/cholmod_sdmult.c, Zeile 90
Ich habe versucht diese auf den "Jungs" dataset und es funktioniert einwandfrei.
library(ISLR);
library(glmnet)
Hitters=na.omit(Hitters)
Hitters$Rich<-ifelse(Hitters$Salary>500,1,0)
Hitters.train = Hitters[1:200,]
Hitters.test = Hitters[201:dim(Hitters)[1],]
x=model.matrix(Rich~.,Hitters)[,-1]
cv.out=cv.glmnet(x, Hitters$Rich, alpha=0, family="binomial")
bestlam=cv.out$lambda.min
ridge.mod=glmnet(x, Hitters$Rich, alpha=0,lambda=bestlam, family="binomial")
Hitters.test$Rich <- NULL
newx = data.matrix(Hitters.test)
ridge.pred=predict(ridge.mod,newx=newx, type="response")
head(ridge.pred)
ridge.pred[1:10,]
Weiß jemand wie ich dies beheben können?
Ich habe eine reproduzierbare Teil über
Danke! Wir werden sehen, ob wir migrieren für Sie jetzt.
Vielen Dank für Eure Hilfe.. Dieses wurde guckten mich für Stunden.
Nur zu-tag-eine Antwort auf diese Antwort, da es das erste google-Ergebnis für diesen speziellen Fehler. Zusätzlich zu den
null
Problem, verursacht durch die Verwendung dieser Funktion mit model.matrix
dieser Fehler kann auch auftreten, wenn Sie Ihre test-x nicht die gleichen Variablen finden sich in den Zug x.InformationsquelleAutor | 2015-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche Problem und ich denke, es wird verursacht durch die Ausbildung und Prüfung mit unterschiedlichen Faktoren, die so andere dimension für das sparse-Matrizen.
Meine Lösung ist zum erstellen der sparse-matrix X für die kombinierten dataset
traintest=rbind(training,testing)
Dies ist nur um sicherzustellen, dass test-set hat die gleiche dimension.
InformationsquelleAutor Ruge
Sieht aus wie Sie, nur haben die falsche Sache zugewiesen wird, newx. Statt:
bank$rich <- NULL
newx = data.matrix(test$rich)
du willst auf null, die Werte im test$reichen und dann feed-test-Daten.matrix. So etwas wie:
test$rich <- NULL
newx = data.matrix(test)
ridge.pred=predict(ridge.mod,newx=newx)
arbeitete für mich
Auch, es sieht aus wie Ihre original-Daten-frame hat einige Muster anhand der Zeilen: Zeilen, die nach 200 haben
NA
Werte innewAccount
. Möchten Sie vielleicht zu Anschrift, fehlende Werte und Ihre Zug-oder split-test vor Ihrer regressionInformationsquelleAutor jimu
Ich hatte das gleiche Problem und ich war immer der exakt gleiche Fehler, am Ende nicht von den oben genannten für mich gearbeitet, aber ich habe das Problem gelöst! wie der Fehler besagt eindeutig, es ist ein "falsche Abmessungen" problem.
Über meine Daten
In meinem Fall habe ich trainiert, meine
glmnet
passen auf eine Daten mit der dimension 36 x 895 und meine test-Daten wurde 6 x 6. der Grund, ich hatte nur 6 Spalten in meiner test-Datensatz war, dass das lasso ausgewählt, diese 6 Funktionen, wenns="lambda.min"
.Meine Lösung
Ich verwendet sparse matrix aus Matrix-Paket um eine matrix zu erstellen (Sie können sogar mit normalen matrix):
ist und ich dann ersetzen Sie die Werte hatte ich in den korrekten Spalten:
nun die predict-Funktion funktioniert einwandfrei.
InformationsquelleAutor Mehrad Mahmoudian
Habe ich diesen Fehler gesehen sowohl vor als auch. Das problem in meinen Daten festgelegt wurde, dass der Faktor die Variablen in mein training und test sets hatten unterschiedliche Zahl von Niveaustufen auf. stellen Sie sicher, dass ist nicht der Fall.
InformationsquelleAutor ekardes
Bin ich Entsendung eine Antwort, denn diese Frage zeigt noch oben in den Suchanfragen. Der code unten führt. Ich lief in einige Probleme, die versuchen zu replizieren, die Beispiel. Es fehlen Daten in
bank
; ich gelöscht, die Beobachtungen. Auch die erzeugten Vorhersage konstant ist (0.4875), weil der ridge-regression setzt alle Variablen, die andere als der Konstante term zu (fast) null (nicht verwunderlich bei einem simulierten Wert vonrich
).InformationsquelleAutor Robert McDonald
newx16<-newx[,-c(1,17)]
coe2<-coe[-(1:2),]#16
newx16%*% matrix(coe2)#yHat : Koeffizienten und Variablen.
InformationsquelleAutor heeseon