我正在建立一个神经网络,以根据多个变量预测“拟合”。 “ FitCls”分为三类:“优秀”,“好”和“差”。我有10个输入变量,并选择了一个包含6个神经元的隐藏层。我想要三个输出神经元,以便可以将呈现给神经网络的案例分类为“优秀”,“良好”或“较差”的“适合”。
我已经看到了一个类似的示例,其中使用虹膜数据(在幻灯片40等)在此处完成此操作:http://www.slideshare.net/DerekKane/data-science-part-viii-artifical-neural-network。我试图复制该结构,但是在绘制网络图时仍然只能得到一个输出节点。
这是我的代码(加载“ nfit”数据框后):
nfit[nfit$FitCls=="Excellent", "Output"] <- 2
nfit[nfit$FitCls=="Good", "Output"] <- 1
nfit[nfit$FitCls=="Poor", "Output"] <- 0
nn <- neuralnet(Output~Universalism+Benevolence+Tradition+Conformity+Security+Power+Achievement+Hedonism+Stimulation+SelfDir, data = nfit, hidden = 6, err.fct = "ce", linear.output = FALSE)
当我运行Neuronet时,它向我发出警告消息,它已将err.fct强制为“ sse”,因为该响应不是二进制文件。我不确定出了什么问题,因为在我要复制的示例中,神经网络的图显示了三个输出节点。请让我知道我在做什么错。
如果这不是使用神经网络进行分类的正确方法,我也将不胜感激,您可以为我应该做的事情提供任何帮助。非常感谢!
最佳答案
要或多或少地复制虹膜示例,您将需要:
library(neuralnet)
library(nnet)
trainset <- cbind(iris[, 1:4], class.ind(iris$Species))
espnnet2=neuralnet(setosa + versicolor + virginica ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, trainset)
plot(espnnet2)
不幸的是,神经网络对数据很敏感,请尝试使用
scale
解释变量。关于r - 如何使用R中的Neuronet软件包对多个输出节点进行编程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33948124/