use*_*619 8 r neural-network dataframe r-caret
我有一个看起来像的训练集
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
Run Code Online (Sandbox Code Playgroud)
Name是结果/因变量.我转换Name,Area并Day为因素,但我不知道我是否应该为Month和Night,只取整数值1-12和0-1分别.
然后我将数据转换为矩阵
ynn <- model.matrix(~Name , data = trainDF)
mnn <- model.matrix(~ Day+Area +X + Y + Month + Night, data = trainDF)
Run Code Online (Sandbox Code Playgroud)
然后我设置调整参数
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)
Run Code Online (Sandbox Code Playgroud)
不过,我得到了错误Error: nrow(x) == n is not TRUE的model<-train
如果我使用xgboost而不是,我也会得到类似的错误nnet
有谁知道这导致了什么?
Jul*_*ora 12
y应该是包含每个样本结果的数字或因子向量,而不是矩阵.运用
train(y = make.names(trainDF$Name), ...)
Run Code Online (Sandbox Code Playgroud)
帮助,make.names修改值,使它们可以是有效的变量名称.