上一节简单说明了神经网络,这里对R中进行神经网络算法的其他函数做下具体说明。
之前说到RSNNS包的神经网络,但是这个函数比较复杂,这里介绍下neuralnet包的神经网络。
这个包中的神经网络建模有个缺陷,只能对数值型的变量进行回归。也就是默认是无法进行分类变量的建模的,比如我们的iris数据集:
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
最后一列:Species分成了三类,如果是一个,比如花期,然后这一列都是数值型变量,可以直接应用neuralnet,可是这里是因子型,需要手工进行转换成哑变量,或者简单理解,就是从分类数据新建几个列,按照T/F的形式进行结果储存。
这里需要用到一个哑变量转化的函数,这个函数在另一个神经网络包里(囧),首先载入两个包:
library(neuralnet)
library(nnet)
nnet里面的class.ind函数就是转化变量的工具,转化前:
head(iris_train$Species)
[1] versicolor setosa setosa versicolor setosa
[6] virginica
Levels: setosa versicolor virginica
转化后:
new<-class.ind(as.factor(iris_train$Species))
head(new)
setosa versic