R语言机器学习之核心包nnet

  • A+
所属分类:R语言 机器学习

神经网络是深度学习的基础。

本文介绍R做机器学习核心包:nnet

一、nnet包介绍

nnet包实现了前馈神经网络和多项对数线性模型。前馈神经网络是一种常用的神经网络结构,如下图所示。
R语言机器学习之核心包nnet

前馈网络中各个神经元按接受信息的先后分为不同的组。每一组可以看作一个神经层。每一层中的神经元接受前一层神经元的输出,并输出到下一层神经元。整个网络中的信息是朝一个方向传播,没有反向的信息传播。前馈网络可以用一个有向无环路图表示。前馈网络可以看作一个函数,通过简单非线性函数的多次复合,实现输入空间到输出空间的复杂映射。这种网络结构简单,易于实现。前馈网络包括全连接前馈网络和卷积神经网络等

二、nnet包安装和加载

R代码:

  1. if(!suppressWarnings(require('nnet')))
  2. {
  3. install.packages('nnet')
  4. require('nnet')
  5. }

三、nnet包应用

第一步:数据获取

  1. ##预测变量X
  2. ir <- rbind(iris3[,,1],iris3[,,2],iris3[,,3])
  3. ##目标变量y
  4. targets <- class.ind( c(rep("s", 50), rep("c", 50), rep("v", 50)) )

第二步:数据集划分(训练集+验证集)

  1. set.seed(1234)
  2. ##70%的数据集作为训练模型
  3. samp <- c(sample(1:50,35), sample(51:100,35), sample(101:150,35))
  4. ir.train <- ir[samp,]
  5. targets.train <- targets[samp,]
  6. ir.validation <- ir[-samp,]
  7. targets.validation <- targets[-samp, ]

第三步:模型构建

  1. ir.nnet <- nnet(ir.train, targets.train, size = 2, rang = 0.1,
  2. decay = 5e-4, maxit = 200)

结果如下:

  1. weights: 19
  2. initial value 80.747493
  3. iter 10 value 35.797549
  4. iter 20 value 35.256099
  5. iter 30 value 35.040425
  6. iter 40 value 29.509802
  7. iter 50 value 25.348691
  8. iter 60 value 24.081465
  9. iter 70 value 23.873708
  10. iter 80 value 23.828264
  11. iter 90 value 23.790097
  12. iter 100 value 23.753690
  13. iter 110 value 23.733482
  14. iter 120 value 17.479635
  15. iter 130 value 2.655936
  16. iter 140 value 2.124963
  17. iter 150 value 1.707239
  18. iter 160 value 1.289882
  19. iter 170 value 0.938505
  20. iter 180 value 0.755850
  21. iter 190 value 0.698843
  22. iter 200 value 0.678346
  23. final value 0.678346
  24. stopped after 200 iterations

第四步:模型应用

  1. test.cl <- function(true, pred) {
  2. true <- max.col(true)
  3. cres <- max.col(pred)
  4. table(true, cres)
  5. }
  6. test.cl(targets.validation, predict(ir.nnet, ir.validation))

结果如下:
R语言机器学习之核心包nnet

参考资料

1 前馈神经网络:https://nndl.github.io/ch5.pdf

2 nnet函数:https://www.rdocumentation.org/packages/nnet/versions/7.3-12/topics/nnet

 

作者:JackWang

个人介绍:专注于从数据中学习,努力发掘数据之洞见,积极利用数据之价值。

数据人网
R语言实战(中文完整版)
基于大数据的用户特征分析
误差分位数的默示有效估计与\ 自回归时间序列的预测区间
中国大数据生态图谱&大数据交易市场专题研究报告

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: