R neuralNet: "non-conformable arguments"
Solution 1
It looks like you need to remove the predictor variable. Try this:
nn_pred<-compute(nn,test[,3:11])
Solution 2
I tried this with the neuralnet package as well. I think if you instead of
net.results <- compute(
net, matrix.train2
do
net.result <- compute(
net, matrix.train2[,c("pclass",
"sexmale", "age", "sibsp", "parch",
"fare","embarkedC","embarkedQ","embaredS")])
it should work. The names of the variables needs to be in the exact order of the model.list$variables
, so you can also type
net.result <- compute(
net, matrix.train2[, net.result$model.list$variables])
I hope this helps. The reason is - I think - that neuralnet has a problem finding out which variables are in your net and which in the matrix... so you match them explicitly instead.
Solution 3
I haven't used the neuralnet ackage, but unless it's doing something weird you shouldn't be calling model.matrix
like that. neuralnet
has a formula interface, so it will call model.matrix
for you. You just have to give it the training data frame train1
.
This also applies for predicting on test data. Don't create a model matrix; just pass it the data frame train2
.
user2548029
Updated on July 09, 2022Comments
-
user2548029 almost 2 years
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 thesurvived
column.Here's the R code I'm attempting to run:
#Build a matrix from 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
andtrain2
data frames into matrices viamodel.matrix
because if I don't I get the following error:> Error in neurons[[i]] %*% weights[[i]] : requires numeric/complex matrix/vector arguments
Note: see the following thread for more details on why I'm using
model.matrix
: "Working with neuralnet in R for the first time: get “requires numeric/complex matrix/vector arguments” but don't know how to correct". -