X-y中的R错误:不一致的数组

时间:2013-07-25 12:06:09

标签: r

我正在尝试使用以下数据集(小部分)训练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)

2 个答案:

答案 0 :(得分:14)

我只是遇到了同样的问题,当我从预测变量中删除任何NAN(或者用一些合理的默认值替换它们)时,它似乎已得到修复。

答案 1 :(得分:3)

错误消息说明:

短语Conformable arrays是线性代数术语,用于“可以合理操作的阵列”。 R中的星号运算符(以及(+ -/)运算符执行逐元素,也就是元素乘法。它们可以是不同的方向,但它们的长度必须相同。

如何在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