我正在尝试使用以下数据集训练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
Run Code Online (Sandbox Code Playgroud)
如果我尝试为上面的小数据集做这个代码工作,但如果我采取更多的数据然后neuralnet()给出错误:
Neuralnet error Error in x - y : non-conformable arrays.
Run Code Online (Sandbox Code Playgroud)
这个错误意味着什么,我该如何解决?
码:
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)
Run Code Online (Sandbox Code Playgroud)
这句话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
Run Code Online (Sandbox Code Playgroud)
两个矩阵或向量之间的星号运算符必须具有兼容的维度:
x = matrix(c(1, 2, 3))
y = matrix(c(c(1, 2, 3)))
e = x * y
e
Run Code Online (Sandbox Code Playgroud)
印刷:
[,1]
[1,] 1
[2,] 4
[3,] 9
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)