我正在尝试使用nnet
包在R中训练神经网络。以下是关于我的训练数据的信息。
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 ...
我已经截断了这个信息。
当我运行以下命令时:
library(nnet)
m4 <- nnet(stars~.,data=traindata,size=10, maxit=1000)
我得到以下错误:
Error in nnet.default(x, y, w, ...) : too many (84581) weights
当我尝试更改参数中的权重时,例如:
m4 <- nnet(stars~.,data=traindata,size=10, maxit=1000,weights=1000)
然后我得到以下错误:
Error in model.frame.default(formula = stars ~ ., data = traindata, weights = 1000) :
variable lengths differ (found for '(weights)')
我犯的错误是什么?如何避免或纠正此错误?也许问题出在我对“权重”的理解上。
发布于 2013-06-14 19:09:25
可以将MaxNWts
增加到适合模型大小的值,也可以减小size
以使模型更小。
您可能还想更多地考虑在模型中确切地包含哪些变量。仅从提供的数据来看,name
是一个超过8,000个级别的因子;只有10000个观察值是不会得到任何有意义的结果的。city
可能更有用,但同样,像神经网络这样复杂的东西中的61个级别可能是边缘的。
https://stackoverflow.com/questions/17105979
复制相似问题