使用神经网络包进行多项式分类

Ric*_*ruz 4 artificial-intelligence r machine-learning neural-network nnet

这个问题应该是非常简单的.但文档没有帮助.

我正在使用R.我必须使用该neuralnet包来解决多项分类问题.

所有示例均用于二项式或线性输出.我可以使用二项式输出做一些一对一的实现.但我相信我应该能够通过将3个单位作为输出层来实现这一点,其中每个单位都是二项式(即,这是正确输出的概率).没有?

这就是我要使用的nnet(我相信它正在做我想要的):

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

这就是我想要使用的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 !
Run Code Online (Sandbox Code Playgroud)

小智 6

你是对的,公式界面neuralnet()不支持' .'.

但是,上面代码的问题在于,不接受某个因素作为目标.您必须首先将因子扩展Species为三个二进制变量.讽刺的是,这个工作最好与功能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)
Run Code Online (Sandbox Code Playgroud)

这有效 - 至少对我而言.