2016-02-20 29 views
7

yılında Tren kullanırken sat_say (x) == n ı Hata: İmleciyle

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

gibi sonuç/bağımlı değişkendir görünen bir eğitim setine sahip DOĞRU değildir. Name, Area ve Day'u faktörlere dönüştürdüm, ancak Month ve Night için varsayılan değerlerden hangisinin yalnızca 1-12 ve 0-1 değerlerini aldığımı bilmiyordum.

Sonra

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

Sonra kurulum parametrelerini Ancak

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) 

ayar matris içine verileri dönüştürmek, ben model<-train

için hata Error: nrow(x) == n is not TRUE almak Ben de benzer bir olsun nnet

yerine xgboost kullanırsam hata

Bunun nedenini bilen var mı?

+0

Hatadan emin değilsiniz, ancak 'Month' ve' Night' değişkenlerini de değişkenlere dönüştürmelisiniz. – ytk

+0

Sadece bunu yaptım. Bu, – user5739619

+1

'y' hatasını çözmedi, bir matris değil, her bir örnek için sonucu içeren bir sayısal veya faktör vektörü olmalıdır. Tren (y = trainDF $ Name, ... '; deneyin, örnek verilerinizle farklı hatalar verir, ancak belki de tam bir veri kümesiyle çalışacaktır. – Julius

cevap

10

y sayısal veya faktör vektör olmalıdır Her bir numunenin sonucunu içeren, bir matris değil. bunların geçerli değişken adları olabilmek için make.names değerlerini değiştirir nerede

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

kullanarak, yardımcı olur.

0

rağmen train yardım dosyası maxtrix veya veri çerçevesi ya beklenir, ancak bir veri çerçevesine matrisi dönüştürmek için deneyebilirsiniz şunları kaydetti:

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

Bunu denediğimde, daha önce olduğu gibi aynı hatayı alıyorum – user5739619