[R]当神经网络功能发生错误时该怎么办

2018年11月15日

神经网络功能

神经网络功能是R中的神经网络库之一。该库的优点是可以使用plot()直接可视化创建的学习器,并且可以一目了然地看到计算图和权重/偏差值。
以下是一个便条,它也可以用作便条,因为在以鸢尾花数据集作为练习进行多类分类时,我以各种方式迷失了方向。在R中实际试用神经网络时,建议选择另一个易于使用的库。

执行Neuronet时的错误和处理

定性变量输入错误

在许多R函数中,如果将定性变量定义为因子类型,它将被自动视为虚拟变量(python没有因子类型,pandas get_dummies函数等。将定性变量相除,0或1是指示其是否属于的列)。 由于神经网络功能只能处理定量变量,因此无法正确识别诸如虹膜的“种类”之类的定性变量,并且发生了错误。要将定性变量转换为虚拟变量,请运行以下代码。

library(caret) 
tmp <- dummyVars(~.,data=train) 
dummy <- as.data.frame(predict(tmp, train))

关于多类别分类时的公式

在nnet函数等中,可以编写如下。在这里,对于种类,将其他变量指定为解释变量(“.除目标变量外的其他均值)。

library(nnet) 
nn1 <- nnet(formula = Species ~ ., size=5, data=train)

由于说明变量已转换为虚拟变量,因此公式通过将所有类别与“ +”连接来描述所有要分类的类别。

library("neuralnet") f = Species.setosa + Species.versicolor + Species.virginica       
~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width 
nn2 <- neuralnet(formula = f, data = dummy)

结果

我能够安全地对虹膜进行分类。