R语言如何实现神经网络?大海哥帮你搞定它!
点击蓝字 关注我们
小伙伴们大家好,我还是那个大海哥,今天大海哥突然看到了一条2016年的老新闻,当时可是轰动全球,很多小伙伴可能已经猜到了,没错,就是人机大战——AlphaGo对战围棋世界冠军李世石,谷歌旗下的AlphaGo以惊人的智慧战胜了世界冠军李世石。这一胜利并不仅仅是人工智能的胜利,更是神经网络技术的巅峰之作。
自神经网络产生以来,人们构建其模型大多都是使用python,而咱们生信的小伙伴们对于R语言会更在行,那很多小伙伴会发出疑问,R语言可以构建神经网络模型吗?大海哥可以肯定的说,当然!并且实现起来非常简单!那么实现之前,让我们先了解一下,神经网络是什么?
神经网络是一种受到人脑神经元启发的计算模型。它的工作方式就像人脑中的神经元相互连接,通过不断的学习和调整权重,神经网络能够自主地从数据中学习,理解复杂的模式和关系。正是因为神经网络的强大,AlphaGo才能够在围棋这个极其复杂的领域取得胜利。除了围棋,神经网络还广泛应用于自动驾驶技术。无人驾驶汽车需要不断地感知周围环境、做出决策并控制汽车行驶,这一切都离不开神经网络的帮助。通过大量的训练和数据,神经网络可以让自动驾驶汽车更加智能、安全地上路。总之,神经网络作为人工智能的核心,正在改变着我们的世界。它是未来的关键,也是我们需要密切关注和理解的重要概念。随着时间的推移,我们将继续深入探讨神经网络的奥秘,探索它如何引领着我们进入一个全新的智能化世界。
那么说了这么多,让我们开始吧!
首先我们需要了解一下神经网络的结构,在一个神经网络中通常会分成这样几层:
1、输入层(input layer)
2、隐藏层(hidden layer)
3、输出层(output layer)
今天大海哥使用的是官方的波士顿房价数据集,分析的目的就是通过神经网络构建模型来预测波士顿房价。首先我们来看一下数据样例。

该数据每行数据代表不同小区的不同特征,其中medv为房子平均价格,也就是本次分析的目标变量。数据共有500个样本,我们按8:2的比例划分训练集和测试集。接着让我们展开分析吧!
library(nnet)
library(MASS)
library(caret)
library(AMORE)
#加载数据,数据来源于MASS包
boston=MASS::Boston
#数据标准化
boston[,1:13] <- apply(boston[,1:13],2,scale)
head(boston)

#划分训练集和测试集
indexes = createDataPartition(boston$medv,p=0.8,list=F)
train=boston[indexes,]
test=boston[-indexes,]
str(boston)

#构建网络,n.neurons表示输入的参数,以及隐藏层个数,及输出结果
net<-newff(n.neurons=c(13,5,3,1),learning.rate.global=1e-4,momentum.global=0.05,error.criterium="LMS",Stao=NA,hidden.layer="tansig",output.layer="purelin",method="ADAPTgdwm")
#训练模型
result<-train(net,train[,1:13],train[,14],report=TRUE,show.step=100,n.shows=5)

#预测结果
y<-sim(result$net,test[,1:13])
#计算均方误差(模型评估指标)
error<-sqrt(sum(y-test$medv)^2)
#输出预测结果
y

error
dim(y)

#可以看到输出了一个99行的房价预测结果哦!
#预测值与原始值的散点对比图
plot(test[,14],test[,14],col="blue",pch="+")
points(test[,14],y,col="red",pch="x")

点击“阅读原文”进入网址