1

neuralnetR で 17 の入力に基づいて 3 つのクラスを予測するために使用しています。1、0、2 の 3 つのクラスがあります。トレーニングとテストの 2 つのファイルがあります。トレーニングは 17 入力の 64 ケースがあり、18 列が出力されます。

x1              x2              x3          etc...    x17                   y
-0.002307       0.034095    -0.002733            0              1
0.004461       -0.041385     0.137767          -0.294394        0
-0.25254       -0.094523     0                  0.074733        0
-0.25254       -0.094523     0                  0.074733        2

もっと。トレーニング用に合計 64 行。

テスト セットはトレーニング データ (16 行) とまったく同じですが、値が異なります。私が使用するコード

library(neuralnet)

nn <- neuralnet(y ~ x1+x2+x3
                  +x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17, 
                data=train,lifesign="full", hidden=15, err.fct="ce", 
                linear.output=FALSE)
an1 <-  compute(nn, Test[1:17])

nnトレーニングの予測を行うことができます

prediction (nn)

これにより、トレーニングケースセットの予測クラスの列 y が得られますが、同じことはできません

prediction (an1): error message

Error in matrix(covariate[not.duplicated, ], nrow = nrow.notdupl) : 
  'data' must be of a vector type

予測が必要か、計算で十分かどうかは完全にはわかりません。しかし、私が得たコンピューティングの結果は次のとおりです。

$net.result
             [,1]
 [1,] 0.7503498233120
 [2,] 0.9982475522024
....
 [14,] 0.0007727434740
 [15,] 0.9999287879015

どのように解釈すればよいかわかりません。次のようなものが必要です

  2                1            0
  [1,] 0.964182671 0.022183652 0.013633677
  [2,] 0.952685528 0.032202528 0.015111944
  [3,] 0.966094194 0.021206723 0.012699083..

各クラスへの確率分布。

使ってみたifelse

 At2 <-(ifelse(Train$y==2,"2", ifelse(Train$y==1, "1","0")))

しかし、それでも同じ 1 列を取得しますnet.result

私が欲しいものを得るためにここで欠けている行を指摘するのを手伝ってくれる人はいますか? また、私ifelseが望むことをしていないと思います-17個の入力に基づいてクラスYを予測します。そうですか?

4

2 に答える 2