5

ああ!computeニューラル ネットワークを使用しようとすると、次のエラーが発生し続けます。

> net.compute <- compute(net, matrix.train2)
Error in neurons[[i]] %*% weights[[i]] : non-conformable arguments

何が問題なのかわかりません。以下に、私のマトリックスからのデータと書式設定の例を示し、実行しようとしているコードを示します。

  • matrix.train1ネットワークのトレーニングに使用されます

    > 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モデルのテストに使用されるトレーニング データのスライスです。

    > 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
    

2 つのマトリックスの唯一の実際の違いはmatrix.train2、列が含まれていないことsurvivedです。

実行しようとしているRコードは次のとおりです。

#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

ここで私が間違っていることを誰かに教えてもらえますか?

ありがとう!


これまでのコメントに基づく更新:

  1. 「ニューラルネットを使用して新しいデータのクラスを予測する」のソリューションを使用してもうまくいかないようです。

    > net.compute <- compute(net, matrix.train2[,1:10])
    Error in neurons[[i]] %*% weights[[i]] : non-conformable arguments
    
  2. そうしないと、次のエラーが発生するため、手動でtrain1データtrain2フレームをマトリックスに入れています。model.matrix

    > Error in neurons[[i]] %*% weights[[i]] : 
    requires numeric/complex matrix/vector arguments
    

注: を使用している理由の詳細については、次のスレッドを参照してください: "初めて R でニューラルネットを使用するmodel.matrix: get "requires numeric/complex matrix/vector arguments" but don't know how to correct ".

4

5 に答える 5

9

予測変数を削除する必要があるようです。これを試して:

nn_pred<-compute(nn,test[,3:11])
于 2016-02-10T14:53:15.530 に答える
1

私はニューラルネット ackage を使用していませんが、何か変なことをしていない限り、model.matrixそのように呼び出すべきではありません。neuralnet式インターフェイスを備えているため、呼び出しmodel.matrixます。トレーニング データ フレームを指定するだけtrain1です。

これは、テスト データの予測にも当てはまります。モデル マトリックスを作成しないでください。データフレームを渡すだけtrain2です。

于 2013-07-09T18:00:45.820 に答える
0

ニューラルネットを使用して新しいデータのクラスを予測し、この質問に使用された答えを試してください

于 2013-07-09T16:13:51.473 に答える