Argh! I keep getting the following error when attempting to compute with my neural network:
> net.compute <- compute(net, matrix.train2)
Error in neurons[[i]] %*% weights[[i]] : non-conformable arguments
I can't figure out what the problem is. Below I'll provide you with an example data and formatting from my matrices and then I'll show you the code I'm attempting to run.
matrix.train1 is used for training the network
> matrix.train1
(Intercept) survived pclass sexmale age sibsp parch fare embarkedC embarkedQ embarkedS
1 1 0 3 1 22.00 1 0 7.2500 0 0 1
2 1 1 1 0 38.00 1 0 71.2833 1 0 0
3 1 1 3 0 26.00 0 0 7.9250 0 0 1
4 1 1 1 0 35.00 1 0 53.1000 0 0 1
5 1 0 3 1 35.00 0 0 8.0500 0 0 1
6 1 0 3 1 999.00 0 0 8.4583 0 1 0
7 1 0 1 1 54.00 0 0 51.8625 0 0 1
8 1 0 3 1 2.00 3 1 21.0750 0 0 1
9 1 1 3 0 27.00 0 2 11.1333 0 0 1
10 1 1 2 0 14.00 1 0 30.0708 1 0 0
11 1 1 3 0 4.00 1 1 16.7000 0 0 1
matrix.train2 is a slice of the training data used for testing the model
> matrix.train2
(Intercept) pclass sexmale age sibsp parch fare embarkedC embarkedQ embarkedS
1 1 1 1 49.00 1 1 110.8833 1 0 0
2 1 3 1 42.00 0 0 7.6500 0 0 1
3 1 1 0 18.00 1 0 227.5250 1 0 0
4 1 1 1 35.00 0 0 26.2875 0 0 1
5 1 3 0 18.00 0 1 14.4542 1 0 0
6 1 3 1 25.00 0 0 7.7417 0 1 0
7 1 3 1 26.00 1 0 7.8542 0 0 1
8 1 2 1 39.00 0 0 26.0000 0 0 1
9 1 2 0 45.00 0 0 13.5000 0 0 1
10 1 1 1 42.00 0 0 26.2875 0 0 1
11 1 1 0 22.00 0 0 151.5500 0 0 1
The only real difference between the two matrices is that matrix.train2 doesn't contain the survived column.
Here's the R code I'm attempting to run:
#Build a matrix from the training data matrix.train1 <- model.matrix(
~ survived + pclass + sex + age + sibsp + parch + fare + embarked,
data=train1
)
library(neuralnet)
#Train the neural net
net <- neuralnet(
survived ~ pclass + sexmale + age + sibsp + parch + fare + embarkedC +
embarkedQ + embarkedS, data=matrix.train1, hidden=10, threshold=0.01
)
#Build a matrix from test data
matrix.train2 <- model.matrix(
~ pclass + sex + age + sibsp + parch + fare + embarked,
data=train2
)
#Apply neural net to test matrix
net.results <- compute(
net, matrix.train2
)
Error in neurons[[i]] %*% weights[[i]] : non-conformable arguments
Can anyone tell me what I'm doing wrong here?
Thanks!
Updates based on comments so far:
Using the solution from "Predicting class for new data using neuralnet" doesn't seem to work.
> net.compute <- compute(net, matrix.train2[,1:10])
Error in neurons[[i]] %*% weights[[i]] : non-conformable arguments
I'm manually putting my train1 and train2 data frames into matrices via model. matrix because if I don't I get the following error:
> Error in neurons[[i]] %*% weights[[i]] :
requires numeric/complex matrix/vector arguments