### 一、nnet包先容
nnet包实现了前馈神经网络和多项对数线性模子。
前馈神经网络是一种常用的神经网络布局,如下图所示。
![](http://img.shujuren.org/pictures/QU/5869fe530bacf.jpg)
>**前馈网络**中各个神经元按接管信息的先后分为差异的组。每一组可以看
作一个神经层。每一层中的神经元接管前一层神经元的输出,并输出到下一层
神经元。整个网络中的信息是朝一个偏向流传,没有反向的信息流传。前馈网
络可以用一个有向无环路图暗示。前馈网络可以看作一个函数,通过简朴非线
性函数的多次复合,实现输入空间到输出空间的巨大映射。这种网络布局简朴,
易于实现。前馈网络包罗全毗连前馈网络和卷积神经网络等
### 二、nnet包安装和加载
R代码
“`{r}
if(!suppressWarnings(require(‘nnet’)))
{
install.packages(‘nnet’)
require(‘nnet’)
}
“`
### 三、nnet包应用
#### 第一步:数据获取
“`{r}
##预测变量X
ir <- rbind(iris3[,,1],iris3[,,2],iris3[,,3])
##方针变量y
targets <- class.ind( c(rep("s", 50), rep("c", 50), rep("v", 50)) )
“`
#### 第二步:数据集分别(练习集+验证集)
“`{r}
set.seed(1234)
##70%的数据集作为练习模子
samp <- c(sample(1:50,35), sample(51:100,35), sample(101:150,35))
ir.train <- ir[samp,]
targets.train <- targets[samp,]
ir.validation <- ir[-samp,]
targets.validation <- targets[-samp, ]
“`
#### 第三步:模子构建
“`{r}
ir.nnet <- nnet(ir.train, targets.train, size = 2, rang = 0.1,
decay = 5e-4, maxit = 200)
“`
功效如下:
>weights: 19
initial value 80.747493
iter 10 value 35.797549
iter 20 value 35.256099
iter 30 value 35.040425
iter 40 value 29.509802
iter 50 value 25.348691
iter 60 value 24.081465
iter 70 value 23.873708
iter 80 value 23.828264
iter 90 value 23.790097
iter 100 value 23.753690
iter 110 value 23.733482
iter 120 value 17.479635
iter 130 value 2.655936
iter 140 value 2.124963
iter 150 value 1.707239
iter 160 value 1.289882
iter 170 value 0.938505
iter 180 value 0.755850
iter 190 value 0.698843
iter 200 value 0.678346
final value 0.678346
stopped after 200 iterations
#### 第四步:模子应用
“`{r}
test.cl <- function(true, pred) {
true <- max.col(true)
cres <- max.col(pred)
table(true, cres)
}
test.cl(targets.validation, predict(ir.nnet, ir.validation))
“`
功效如下:
![](http://img.shujuren.org/pictures/HY/586a071665ed1.jpg)
### 参考资料
1 前馈神经网络:https://nndl.github.io/ch5.pdf
2 nnet函数:https://www.rdocumentation.org/packages/nnet/versions/7.3-12/topics/nnet
您在阅读中,有什么发起可能想法,请留言。
假如您以为本文有收获,请小额赞赏,让我有动力继承写出高质量的文章。
![](http://img.shujuren.org/pictures/S2/5867988ca85ca.png)