RForML之核心包:nnet
神经网络是深度学习的基础。
本文介绍R做机器学习核心包:nnet
一、nnet包介绍
nnet包实现了前馈神经网络和多项对数线性模型。
前馈神经网络是一种常用的神经网络结构,如下图所示。
前馈网络中各个神经元按接受信息的先后分为不同的组。每一组可以看
作一个神经层。每一层中的神经元接受前一层神经元的输出,并输出到下一层
神经元。整个网络中的信息是朝一个方向传播,没有反向的信息传播。前馈网
络可以用一个有向无环路图表示。前馈网络可以看作一个函数,通过简单非线
性函数的多次复合,实现输入空间到输出空间的复杂映射。这种网络结构简单,
易于实现。前馈网络包括全连接前馈网络和卷积神经网络等
二、nnet包安装和加载
R代码
if(!suppressWarnings(require('nnet')))
{
install.packages('nnet')
require('nnet')
}
三、nnet包应用
第一步:数据获取
##预测变量X
ir <- rbind(iris3[,,1],iris3[,,2],iris3[,,3])
##目标变量y
targets <- class.ind( c(rep("s", 50), rep("c", 50), rep("v", 50)) )
第二步:数据集划分(训练集+验证集)
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, ]
第三步:模型构建
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
第四步:模型应用
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))
结果如下:
参考资料
1 前馈神经网络:https://nndl.github.io/ch5.pdf
2 nnet函数:https://www.rdocumentation.org/packages/nnet/versions/7.3-12/topics/nnet
【温馨提示】:因为微信公众号不支持外链,请大家点击【阅读原文】,进入【数据人网】获取更多有价值的信息。大家可以在数据人网注册,然后写文章记录自己学习或者应用数据的历程。
您在阅读中,有什么建议或者想法,请留言。
如果您觉得本文有收获,请小额赞赏,让我有动力继续写出高质量的文章。
数据人网是数据人学习、交流和分享的平台http://shujuren.org 。专注于从数据中学习。
平台的理念:人人投稿,知识共享;人人分析,洞见驱动;智慧聚合,普惠人人。
您在数据人网平台,可以1)学习数据知识;2)创建数据博客;3)认识数据朋友;4)寻找数据工作;5)找到其它与数据相关的干货。
我们努力坚持做原创,分享和传播有价值的数据知识!
我们都是数据人,数据是有价值的,坚定不移地利用数据价值创造价值!
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!