这个问题应该很简单。但文档没有帮助。
我正在使用 R。我必须使用 neuralnet
包来解决多项分类问题。
所有示例均针对二项式或线性输出。我可以使用二项式输出进行一些一对一的实现。但我相信我应该能够通过使用 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 !
最佳答案
你说得对,neuralnet()
的公式接口(interface)不支持'.
'。
但是,上面代码的问题在于某个因素不被接受为目标。您必须首先将因子 Species
扩展为三个二元变量。讽刺的是,这与 nnet
包中的函数 class.ind()
配合使用效果最好(它不需要这样的函数,因为 nnet()
code> 和 multinom()
可以很好地处理因子):
trainData <- cbind(iris[, 1:4], class.ind(iris$Species))
neuralnet(setosa + versicolor + virginica ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, trainData)
这有效 - 至少对我来说。
关于r - 使用神经网络包进行多项分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20813039/