【发布时间】:2016-03-01 02:37:20
【问题描述】:
我正在构建一个神经网络来根据多个变量预测“拟合”。 “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)
当我运行神经网络时,它给了我一条警告消息,它已强制 err.fct 为“sse”,因为响应不是二进制的。我不确定出了什么问题,因为在我复制的示例中,神经网络的图显示了三个输出节点。请让我知道我做错了什么。
如果这不是使用神经网络进行分类的正确方法,我也非常感谢您能就我应该做什么提供任何帮助。非常感谢!
【问题讨论】:
-
也许图书馆将您的响应变量视为一个数字。您是否尝试过将
FitCls列变成因子列?nfit$FitCls <- as.factor(nfit$FitCls) -
感谢您的回复。我已经尝试过了,但神经网络似乎无法以这种方式处理因素。这种方法适用于 nnet,但由于某种原因,不适用于神经网络。
标签: r machine-learning neural-network