我在R中训练神经网络时得到错误"nnet.default(x,y,w,...)中的错误:太多(77031)权重"

Ayu*_*ngh 16 r machine-learning neural-network nnet

我正在尝试使用包训练R中的神经网络nnet.以下是有关我的培训数据的信息.

str(traindata)

'data.frame':   10327 obs. of  196 variables:
$ stars                          : num  5 5 5 3.5 3.5 4.5 3.5 5 5 3.5 ...
$ open                           : num  1 1 1 1 1 1 1 1 1 1 ...
$ city                           : Factor w/ 61 levels "ahwatukee","anthem",..: 36 38
$ review_count                   : int  3 5 4 5 14 6 21 4 14 10 ...
$ name                           : Factor w/ 8204 levels " leftys barber shop",..:
$ longitude                      : num  -112 -112 -112 -112 -112 ...
$ latitude                       : num  33.6 33.6 33.5 33.4 33.7 ...
$ greek                          : int  0 0 0 0 0 0 0 0 0 0 ...
$ breakfast...brunch             : int  0 0 0 0 0 0 0 0 0 0 ...
$ soup                           : int  0 0 0 0 0 0 0 0 0 0 ...
Run Code Online (Sandbox Code Playgroud)

我已经截断了这些信息.

当我运行以下内容时:

library(nnet)  
m4 <- nnet(stars~.,data=traindata,size=10, maxit=1000)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error in nnet.default(x, y, w, ...) : too many (84581) weights
Run Code Online (Sandbox Code Playgroud)

当我尝试在参数中更改权重时:

m4 <- nnet(stars~.,data=traindata,size=10, maxit=1000,weights=1000)
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

Error in model.frame.default(formula = stars ~ ., data = traindata, weights = 1000) : 
variable lengths differ (found for '(weights)')
Run Code Online (Sandbox Code Playgroud)

我犯的错是什么?如何避免或更正此错误?也许问题在于我对"重量"的理解.

Hon*_*Ooi 14

要么增加到MaxNWts适合模型大小的东西,要么缩小size以使模型变小.

您可能还想更多地考虑模型中包含哪些变量.只是查看提供的数据,name是一个超过8000级的因素; 只有10000次观察,你不会得到任何明智的东西.city可能更有用,但同样,神经网络这样复杂的东西中的61个水平可能是微不足道的.


Tom*_*evi 8

将"MaxNWts"选项增加到大于84581的选项.