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

标签 r machine-learning artificial-intelligence 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)

这就是我尝试使用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/

相关文章:

r - ggplot2:将线宽应用于图例键

r - 如何跨运行应用函数

r - 在 R 中检测具有多个观察值的行

python - 在不平衡数据集上计算 ROC AUC 时应使用哪种平均值?

artificial-intelligence - 有人可以解释一下人工神经网络吗?

r - ggplot2 : Adding two errorbars to each point in scatterplot

machine-learning - 人工神经网络相对于支持向量机有哪些优势?

artificial-intelligence - 子节点的贝叶斯网络概率

flash - AS3 中的 A*(A 星)实现

machine-learning - 我们如何获取/定义卷积神经网络中的滤波器?