我正在尝试使用以下数据集(小部分)训练R中的神经网络
Age Salary Mortrate Clientrate Savrate PartialPrate
[1,] 62 2381.140 0.047 7.05 3.1 0
[2,] 52 1777.970 0.047 6.10 3.1 0
[3,] 53 2701.210 0.047 6.40 3.1 0
[4,] 52 4039.460 0.047 7.00 3.1 0
[5,] 56 602.240 0.047 6.20 3.1 0
[6,] 43 2951.090 0.047 6.80 3.1 0
[7,] 49 4648.860 0.047 7.50 3.1 0
[8,] 44 3304.110 0.047 7.10 3.1 0
[9,] 56 1300.000 0.047 6.10 3.1 0
[10,] 50 1761.440 0.047 6.95 3.1 0
如果我尝试对上面的小数据集进行操作,则代码可以正常工作,但如果我获取更多数据,则neuralnet()
会出错:
Neuralnet error Error in x - y : non-conformable arrays.
这个错误是什么意思,我该如何解决?
代码:
trainingsoutput <- AllData$PartialPrepay
trainingdata <- cbind(AllData$LEEFTIJD, AllData$MEDSAL2, AllData$rate5Y,
AllData$CRate, AllData$SavRate, trainingsoutput)
dimnames(trainingdata) <- list(NULL,
c("Age","Salary","Mortrate","Clientrate",
"Savrate","PartialPrate"))
nn <- neuralnet(PartialPrate ~ Age + Salary + Mortrate + Clientrate + Savrate,
data = trainingdata ,hidden=3, err.fct="sse", threshold=0.01)
答案 0 :(得分:14)
我只是遇到了同样的问题,当我从预测变量中删除任何NAN(或者用一些合理的默认值替换它们)时,它似乎已得到修复。
答案 1 :(得分:3)
短语Conformable arrays
是线性代数术语,用于“可以合理操作的阵列”。 R中的星号运算符(以及(+
-
和/
)运算符执行逐元素,也就是元素乘法。它们可以是不同的方向,但它们的长度必须相同。
x = matrix(c(1, 2, 3)) #has dimension 3 1
y = matrix(c(1, 2)) #has dimension 2 1
e = x * y #Error in x * y : non-conformable arrays
e
两个矩阵或向量之间的星号运算符必须具有兼容的尺寸:
x = matrix(c(1, 2, 3))
y = matrix(c(c(1, 2, 3)))
e = x * y
e
打印:
[,1]
[1,] 1
[2,] 4
[3,] 9
matrix(1,2,3) + matrix(1,2) #Error, non-conformable arrays
matrix(1:6) / matrix(1:5) #Error, non-conformable arrays
matrix(c(1,2)) / matrix(5) #Error, non-conformable arrays
matrix(c(1,2,3)) * matrix(c(1,2)) #Error, non-conformable arrays
matrix(c(1,2)) * matrix(c(1)) #Error, non-conformable arrays
matrix(c(1,2)) * matrix(1) #Error, non-conformable arrays