2016-02-20 4 views
7

ich einen Trainingssatz haben, der wieFehler: nrow (x) == n ist nicht wahr, wenn in Caret mit Zug

Name  Day   Area   X Y Month Night 
ATTACK Monday LA   -122.41 37.78 8  0 
VEHICLE Saturday CHICAGO  -1.67 3.15 2  0 
MOUSE  Monday TAIPEI  -12.5 3.1 9  1 

Name ist das Ergebnis/abhängige Variable aussieht. Ich konvertierte Name, Area und Day in Faktoren, aber ich war nicht sicher, ob ich für Month und Night, die nur ganzzahlige Werte 1-12 und 0-1 jeweils annehmen sollte.

ich konvertieren dann die Daten in Matrix

ynn <- model.matrix(~Name , data = trainDF) 
mnn <- model.matrix(~ Day+Area +X + Y + Month + Night, data = trainDF) 

ich dann Setup

nnTrControl=trainControl(method = "repeatedcv",number = 3,repeats=5,verboseIter = TRUE, returnData = FALSE, returnResamp = "all", classProbs = TRUE, summaryFunction = multiClassSummary,allowParallel = TRUE) 
nnGrid = expand.grid(.size=c(1,4,7),.decay=c(0,0.001,0.1)) 
model <- train(y=ynn, x=mnn, method='nnet',linout=TRUE, trace = FALSE, trControl = nnTrControl,metric="logLoss", tuneGrid=nnGrid) 

jedoch die Parameter Tuning, erhalte ich die Fehler Error: nrow(x) == n is not TRUE für die model<-train

Ich habe auch ein ähnliches Fehler, wenn ich xgboost anstelle von nnet

verwende

Wer weiß, was das verursacht?

+0

Nicht sicher über den Fehler, aber Sie sollten "Monat" und "Nacht" zu Faktorvariablen konvertieren. – ytk

+0

Ich habe das gerade gemacht. Das löste nicht den Fehler – user5739619

+1

'y' sollte ein numerischer oder ein Faktorvektor sein, der das Ergebnis für jede Probe, nicht eine Matrix enthält. Probieren Sie 'train (y = trainDF $ Name, ...'; es gibt verschiedene Fehler mit Ihren Beispieldaten, aber vielleicht funktioniert es mit einem vollständigen Datensatz. – Julius

Antwort

10

y ein numerischer oder Faktorvektor sein sollte enthält das Ergebnis für jede Probe, keine Matrix. Mit

train(y = make.names(trainDF$Name), ...) 

hilft, wo make.names Werte modifiziert, so dass sie gültige Variablennamen sein könnte.

0

Obwohl in der Hilfedatei von train der entweder maxtrix oder Datenrahmen zu erwarten, aber man kann versuchen, die Matrix zu einem Datenrahmen zu konvertieren:

model <- train(y=ynn, x=as.data.frame(mnn), method='nnet',linout=TRUE, trace = FALSE, trControl = nnTrControl,metric="logLoss", tuneGrid=nnGrid) 
+0

Wenn ich das versuche, bekomme ich den gleichen Fehler wie zuvor – user5739619

Verwandte Themen