Ich versuche meine Daten in Trainings- und Testdaten unter Verwendung eines von meinem Professor erhaltenen Codes aufzuteilen, bekomme aber Fehler. Ich dachte, dass es wegen des Datenformats war, aber ich ging zurück, um es zu kodieren und nichts funktioniert. Die Daten sind derzeit in Matrixform und ich glaube, dass der Code verwendet wird, um vorherzusagen, wie genau die logistische Regression ist.Fehler in der multiplen Regression: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersatzlänge
A = matrix(
c(64830,18213,4677,24761,9845,17504,22137,12531,5842,28827,66161,18852,5581,27219,10159,17527,23402,11409,8115,31425,68426,18274,5513,25687,10971,14104,19604,13438,6011,30055,69716,18366,5735,26556,11733,16605,20644,15516,5750,31116,73128,18906,5759,28555,11951,19810,22086,17425,6152,28469,1,1,1,0,1,0,0,0,0,1),
nrow = 10,
ncol = 6,
byrow = FALSE)
n<-row(A);
K<-ncol(A)-1;
x<-matrix(0,n,K);
for(i in 1:K){x[,i]<-A[,i];}
#A[,i] is 10long and x[,i] is 1long.
A[,i:length(x[,i])]=x[,i]
y<-A[,K+1];
#training/test data split:
idx<-sample(1:n,floor(n/2),replace=FALSE);
xtr<-x[idx,]; ytr<-y[idx];
xts<-x[-idx,]; yts<-y[-idx];
#fit the logistic model to it
myglm<-glmnet(xtr,ytr,family = "binomial");
#Error in if (is.null(np) | (np[2] <= 1)) stop("x should be a matrix with 2 or more columns") : argument is of length zero
#apply traning data to test data
mypred<-predict(myglm,newx=xts,type="response",s=0.01);
posteriprob<-mypred[,,1];
yhat<-matrix(1,nrow(xts),1);
for(i in 1:nrow(xts))
{
yhat[i]<-which.max(posteriprob[i,]);
}
acc<-sum(yhat+2==yts)/nrow(xts);
cat("accuracy of test data:", acc, "\n");
Die erste forloop gibt mir diese Fehlermeldung: Fehler in x[, i] <- A[, i]
:
Number of items to replace is not a multiple of replacement length
Als ich das logistische Modell xtr/ytr
mit laufen bekomme ich Fehler in if (is.null(np) | (np[2] <= 1)) stop("x should be a matrix with 2 or more columns")
:
argument is of length zero
erster Teil funktioniert jetzt, aber ich dachte, "xtr" hatte bereits die richtige Anzahl von Spalten, weil ich Idx definiert habe? Ich bin verwirrt, weil meine letzte Spalte in der Matrix meine binomischen Daten sein soll. – user6318255
'xtr <-x [idx]' gibt Ihnen einen Vektor. Wahrscheinlich, was Sie wollen, ist 'xtr <-x [idx,]'. Wie auch immer, versuchen Sie, den Code in der Frage zu bearbeiten, wenn Sie könnten, damit wir auf die gleiche Seite gelangen. – zyurnaidi
Das hat funktioniert, aber jetzt habe ich diesen Beobachtungsfehler, den du erwähnt hast. Wie ändere ich die Glmnet-Formel so, dass sie die letzte Binomialspalte meiner Ausgangsmatrix verwendet? Ich habe versucht: myglm <-glmnet (ytr, yts, family = "multinomial"); weil ytr/yts Binomial sind. Ich verstehe, dass ich n x 2 brauche, aber ich habe keine Ahnung, wie man die logistische Regression implementiert, wenn ich diese Formel nicht verwenden kann. – user6318255