这个问题应该是非常简单的。但文档没有帮助。
我正在使用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 !
答案 0 :(得分:5)
neuralnet()
的公式界面不支持“.
”,你说得对。
但是,上面代码的问题在于,不接受某个因素作为目标。您必须首先将因子Species
扩展为三个二进制变量。具有讽刺意味的是,这最适用于class.ind()
包中的函数nnet
(由于nnet()
和multinom()
可以正常使用这些函数,因此不需要这样的函数):< / p>
trainData <- cbind(iris[, 1:4], class.ind(iris$Species))
neuralnet(setosa + versicolor + virginica ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, trainData)
这很有效 - 至少对我而言。
答案 1 :(得分:-1)
也许你应该看看http://cran.r-project.org/web/packages/nnet/nnet.pdf,包的内容的描述。您可以看到有一个名为multinom的函数可以帮助您实现这一目标。
基本上,它会将定性列物种分成定量列(这是class.ind所做的),然后尝试预测这些新人工柱的值。
nn&lt; - multinom(species~。,iris)
我不确定我是否回答了你的问题,因为我觉得你正在尝试用神经网络做一些与nnet不兼容的东西。如果我错了那么......抱歉;)