4

この質問は本当に単純なはずです。しかし、ドキュメントは役に立ちません。

R を使用していneuralnetます。多項分類問題にはパッケージを使用する必要があります。

すべての例は、2 項または線形出力用です。二項出力を使用して、1対すべての実装を行うことができました。しかし、出力レイヤーとして3つのユニットを使用することで、これを行うことができるはずだと思います。それぞれが二項式です(つまり、それが正しい出力である確率)。いいえ?

これは私が使用するものですnnet(これは私がやりたいことをしていると思います):

data(iris)
library(nnet)
m1 <- nnet(Species ~ ., iris, size = 3)
table(predict(m1, iris, type = "class"), iris$Species)

これは私が使用しようとしているものですneuralnet(式のハックは、式neuralnetの ' ' 表記をサポートしていないように見えるためです.):

data(iris)
library(neuralnet)
formula <- paste('Species ~', paste(names(iris)[-length(iris)], collapse='+'))
m2 <- neuralnet(formula, iris, hidden=3, linear.output=FALSE)
# fails !
4

2 に答える 2

8

neuralnet()の数式インターフェイスが' ' をサポートしていないことは正しいです.

ただし、上記のコードの問題は、因子がターゲットとして受け入れられないことです。まず、因子Speciesを 3 つのバイナリ変数に拡張する必要があります。皮肉なことに、これはパッケージの関数で最もよく機能class.ind()nnetます (そのような関数は必要ありません。なぜならnnet()multinom()因子でうまく機能するからです)。

trainData <- cbind(iris[, 1:4], class.ind(iris$Species))
neuralnet(setosa + versicolor + virginica ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, trainData)

これは機能します-少なくとも私にとっては。

于 2014-02-15T17:43:33.247 に答える