R语言如何实现神经网络?大海哥帮你搞定它!






R语言如何实现神经网络?大海哥帮你搞定它!

大海哥  生信果  2023-09-14 19:00:49

点击蓝字 关注我们

小伙伴们大家好,我还是那个大海哥,今天大海哥突然看到了一条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
errordim(y)
#可以看到输出了一个99行的房价预测结果哦!#预测值与原始值的散点对比图plot(test[,14],test[,14],col="blue",pch="+")points(test[,14],y,col="red",pch="x")

结果的散点图可以看出,使用神经网络构建模型可以基本预测出房价的一个大致趋势,但是仍然存在一些误差,说明神经网络也预测不准房价!!玩笑话,这可能是由于我们没有事先对变量进行有效的提取,导致模型性能下降,小伙伴们在使用神经网络时也需要结合一些有效的方法来对数据进行一些处理,毕竟再强的模型也需要一个好的数据支撑!小伙伴们是不是感觉其实并没有想象中的那么繁琐?手头有数据的小伙伴,可以尝试着运行一下试试看。

看到这里是不是已经被大海哥的学识折服了!其实神经网络的内容远远不止大海哥介绍的这些,还有更深更广的知识需要我们探索,其不仅仅局限于大海哥构建的传统神经网络,还包括各种各样的变种和架构,如循环神经网络(RNN)、卷积神经网络(CNN)等,它们各自在不同的任务中发挥着重要作用。总之,神经网络作为人工智能的核心,正在改变着我们的世界。它是未来的关键,也是我们需要密切关注和理解的重要概念。

感兴趣的小伙伴欢迎来参观哟,网址:http://www.biocloudservice.com/home.html)

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