GRNN神经网络原理与matlab实现

这篇具有很好参考价值的文章主要介绍了GRNN神经网络原理与matlab实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1案例背景

1.1GRNN神经网络概述

        广义回归神经网络(GRNN Generalized Regression Neural Network)是美国学者 Don-ald F. Specht在1991年提出的,它是径向基神经网络的一种。GRNN具有很强的非线性映射能力和柔性网络结构以及高度的容错性和鲁棒性,适用于解决非线性问题。GRNN 在逼近能力和学习速度上较RBF网络有更强的优势,网络最后收敛于样本量积聚较多的优化回归面,并且在样本数据较少时,预测效果也较好。此外,网络还可以处理不稳定的数据。因此,GRNN 在信号过程、结构分析、教育产业,能源、食品科学、控制决策系统、药物设计、金融领域、生物工程等各个领域得到了广泛的应用。

1.2GRNN 的网络结构

GRNN神经网络原理与matlab实现,神经网络,matlab,人工智能

        (1 )输入层
        输入层神经元的数目等 学习样本中输入向量的维数,各神经元是简单的分布单元,直接将输入变量传递给模式层。
        (2 )模式层
        模式层神经元数目等于学习样本的数目 ,各神 经元对应不 同的样本,模式层神经元传递函数为
GRNN神经网络原理与matlab实现,神经网络,matlab,人工智能
        (3 )求和层
        求和层中使用两种类型神经元进行求和。

GRNN神经网络原理与matlab实现,神经网络,matlab,人工智能

        (4)输出层

GRNN神经网络原理与matlab实现,神经网络,matlab,人工智能

1.3 GRNN 的理论基础

        广义回归神经网络的理论基础是非线性回归分析,非独立变量Y相对于独立变量工的回归分析实际上是计算具有最大概率值的y。设随机变量x和随机变量y的联合概率密度函数为f(z,y),已知工的观测值为X,则y相对于X的回归,也即条件均值为

1.4运输系统货运量预测相关背景

        运输系统作为社会经济系统中的一个子系统,在受外界因素影响和作用的同时,对外部经济系统也具有一定的反作用,使得运输需求同时受到来自运输系统内外两方面因素的影响。作为运输基础设施建设投资决策的基础,运输需求预测在国家和区域经济发展规划中具有十分重要的作用,其中,由于货物运输和地方经济及企业发展的紧密联系,货运需求预测成为货运需求和经济发展关系研究中的一个重要问题。因此,作为反映货物运输需求的一项重要指标,货运量预测研究和分析具有较强的实际和理论意义。
        常用的货运量预测方法包括时间序列方法、移动平滑法、指数平滑法、随机时间序列方法、相关、回归分析法以及灰色预测方法和多种方法综合的组合预测方法等。这些方法大都集中在对其因果关系回归模型和时间序列模型的分析上,所建立的模型不能全面、科学和本质地反映所预测动态数据的内在结构和复杂特性,丢失了信息量。人工神经网络作为-种并行的计算模型,具有传统建模方法所不具备的很多优点:有很好的非线性映射能力,对被建模对象的先验知识要求不多,一般不必事先知道有关被建模对象的结构、参数、动态特性等方面的知识,只需给出对象的输入,输出数据,通过网络本身的学习功能就可以达到输人与输出的完全符合。
        在此情况下,国内一些学者将神经网络引入到货运量预测中来。但BP神经网络在用于函数逼近时,存在收敛速度慢和局部极小等缺点,在解决样本量少而且噪声较多问题时效果并不理想。GRNN在逼近能力、分类能力和学习速度方面具有较强优势,网络最后收敛于样本量积聚最多的优化回归面,并且在数据缺乏时效果也较好。网络可以处理不稳定的数据,因此本案例采用GRNN建立了货运量预测模型,并利用历史统计数据对货运量进行预测。

2模型建立

        根据货运量影响因素的分析,分别取国内生产总值(GDP)、工业总产值,铁路运输线路长度、复线里程比重、公路运输线路长度,等级公路比重﹑铁路货车数量和民用载货汽车数量8项指标因素作为网络输入,以货运总量﹑铁路货运量和公路货运量3项指标因素作为网络输出,构建 GRNN,由于训练数据较少,采取交叉验证方法训练GRNN神经网络,并用循环找出最佳的SPREAD。
        本案例中data. mat中共有p,t两组数据,又各含13组数据,代表了1996—2008年的货运量和与其相关的各个变量值。将p、t的前12组数据作为网络的训练数据,最后1组数据作为网络的预测数据,建立 GRNN 神经网络对货运量进行预测。

3 MATLAB实现

        GRNN网络的相关函数,其函数名称为newgrnn().该函数可用于设计一个广义回归神经网络。广义回归神经网络是RBF网络的一种,通常用于函数逼近,其调用格式为

net = newgrnn(P.T,SPREAD)

        其中,P为Q组输入向量组成的R*Q维矩阵;T为Q组目标分类向量组成的S*Q维矩阵;SPREAD为径向基函数的扩展速度,默认值为1。
        根据上面确定的网络输入和输出,利用1996—2007年某地的历史数据作为网络的训练样本,2008年的数据作为网络的外推测试样本。代码如下:

%% Matlab神经网络43个案例分析


 
%% 清空环境变量
clc;
clear all
close all
nntwarn off;

%% 载入数据
load data;
% 载入数据并将数据分成训练和预测两类
p_train=p(1:12,:);
t_train=t(1:12,:);
p_test=p(13,:);
t_test=t(13,:);
%% 交叉验证
desired_spread=[];
mse_max=10e20;
desired_input=[];
desired_output=[];
result_perfp=[];
indices = crossvalind('Kfold',length(p_train),4);
h=waitbar(0,'正在寻找最优化参数....');
k=1;
for i = 1:4
    perfp=[];
    disp(['以下为第',num2str(i),'次交叉验证结果'])
    test = (indices == i); train = ~test;
    p_cv_train=p_train(train,:);
    t_cv_train=t_train(train,:);
    p_cv_test=p_train(test,:);
    t_cv_test=t_train(test,:);
    p_cv_train=p_cv_train';
    t_cv_train=t_cv_train';
    p_cv_test= p_cv_test';
    t_cv_test= t_cv_test';
    [p_cv_train,minp,maxp,t_cv_train,mint,maxt]=premnmx(p_cv_train,t_cv_train);
    p_cv_test=tramnmx(p_cv_test,minp,maxp);
    for spread=0.1:0.1:2;
        net=newgrnn(p_cv_train,t_cv_train,spread);
        waitbar(k/80,h);
        disp(['当前spread值为', num2str(spread)]);
        test_Out=sim(net,p_cv_test);
        test_Out=postmnmx(test_Out,mint,maxt);
        error=t_cv_test-test_Out;
        disp(['当前网络的mse为',num2str(mse(error))])
        perfp=[perfp mse(error)];
        if mse(error)<mse_max
            mse_max=mse(error);
            desired_spread=spread;
            desired_input=p_cv_train;
            desired_output=t_cv_train;
        end
        k=k+1;
    end
    result_perfp(i,:)=perfp;
end;
close(h)
disp(['最佳spread值为',num2str(desired_spread)])
disp(['此时最佳输入值为'])
desired_input
disp(['此时最佳输出值为'])
desired_output
%% 采用最佳方法建立GRNN网络
net=newgrnn(desired_input,desired_output,desired_spread);
p_test=p_test';
p_test=tramnmx(p_test,minp,maxp);
grnn_prediction_result=sim(net,p_test);
grnn_prediction_result=postmnmx(grnn_prediction_result,mint,maxt);
grnn_error=t_test-grnn_prediction_result';
disp(['GRNN神经网络三项流量预测的误差为',num2str(abs(grnn_error))])
save best desired_input desired_output p_test t_test grnn_error mint maxt

 运行结果如下:

最佳spread值为0.5
此时最佳输入值为

desired_input =

   -1.0000   -0.8993   -0.7948   -0.5023   -0.2955   -0.0574    0.1602    0.6652    1.0000
   -0.9998   -1.0000   -0.1291   -0.0072    0.2070    0.3417    0.5137    0.7838    1.0000
   -1.0000   -0.8616   -0.4969   -0.4969    0.1950    0.3333    0.4465    0.6604    1.0000
   -1.0000   -0.5385   -0.0769    0.5385    0.2308    0.3846    0.3846    0.6923    1.0000
   -1.0000   -0.9429   -0.9175   -0.7778   -0.5937   -0.3270   -0.0286    0.5619    1.0000
   -1.0000   -1.0000   -1.0000   -0.5000   -0.3000   -0.2000    0.0000    0.5000    1.0000
    0.0141   -1.0000    0.0187    0.0187    0.2477    0.3682    0.4944    0.7735    1.0000
   -1.0000   -0.9211   -0.8826   -0.9563   -0.7786   -0.6099   -0.3042    0.2843    1.0000

此时最佳输出值为

desired_output =

   -1.0000   -0.9839   -0.9838   -0.7127   -0.4503   -0.2463    0.0126    0.5394    1.0000
   -1.0000   -0.9040   -0.8604   -0.6403   -0.3950   -0.2293   -0.0769    0.4116    1.0000
   -1.0000   -0.8020   -0.8042   -0.5446   -0.2471   -0.0500    0.0416    0.4693    1.0000

GRNN神经网络三项流量预测的误差为9959.185       1777.8231       14498.027

        由程序运行后的结果中看出,SPREAD值设置为0.5时,训练数据的预测较好。SPREAD值越小,网络对样本的逼近性就越强;SPREAD值越大,网络对样本数据的逼近过程就越平滑,但误差也相应增大。在实际应用时,为了选取最佳的SPREAD值,一般采取本案例中循环训练的方法,从而达到最好的预测效果。

4案例扩展

        GRNN神经网络和BP网络都可以用于货运量等的预测,但对具体的网络训练来说,GRNN需要调整的参数较少,只有一个SPREAD参数,因此可以更快地预测网络,具有较大的计算优势。下面将针对本案例数据,使用BP神经网络模型预测得出的流量数据。代码如下:

%% 以下程序为案例扩展里的GRNN和BP比较 需要load chapter8.1的相关数据
clear all
load best
n=13;
p=desired_input;
t=desired_output;
net_bp=newff(minmax(p),[n,3],{'tansig','purelin'},'trainlm');
% 训练网络
net.trainParam.show=50;
net.trainParam.epochs=2000;
net.trainParam.goal=1e-3;
%调用TRAINLM算法训练BP网络
net_bp=train(net_bp,p,t);
bp_prediction_result=sim(net_bp,p_test);
bp_prediction_result=postmnmx(bp_prediction_result,mint,maxt);
bp_error=t_test-bp_prediction_result';
disp(['BP神经网络三项流量预测的误差为',num2str(abs(bp_error))])

运行结果:

BP神经网络三项流量预测的误差为6967.20678      11142.5527      4156.17376

完整代码获取:

https://download.csdn.net/download/weixin_44209907/88142535文章来源地址https://www.toymoban.com/news/detail-624378.html

到了这里,关于GRNN神经网络原理与matlab实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据分类】GRNN数据分类 广义回归神经网络数据分类【Matlab代码#30】

    数据分类问题是指根据给定的数据特征,将数据实例划分到不同的预定义类别或标签中的任务。它是机器学习和数据挖掘领域中常见的任务之一。数据分类问题的目标是通过对已知类别的数据进行学习,建立一个分类模型,然后利用该模型对未知数据进行分类预测。 数据分类

    2024年02月07日
    浏览(59)
  • 基于信号功率谱特征和GRNN广义回归神经网络的信号调制类型识别算法matlab仿真

    目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 MATLAB2022a         本课题,我们主要对MPSK和MFSK调制类型进行识别。在进行信号调制方式区分之前,首先需要对PSK和FSK进行区分,提出了一种基于信号功率谱的PSK和FSK调制方式

    2024年02月05日
    浏览(39)
  • 广义回归神经网络(GRNN)的实现(Python,附源码及数据集)

    广义回归神经网络(Generalized Regression Neural Network,简称GRNN)是一种具有较好的非线性逼近能力的四层前向传播神经网络,它属于径向基神经网络的一种变形形式,数据输入网络后依次经过输入层、模式层、求和层、输出层后得到输出结果,与反向传播神经网络(BPNN)不通的

    2023年04月15日
    浏览(69)
  • m基于C3D-hog-GRNN广义回归神经网络模型的人员异常行为识别算法的matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB       实时的人群异常行为识别是一项极具挑战的工作,具有较高的现实意义和社会需求,快速准确地判断出异常行为并及时预警,一直是我们探索的方向。传统的机器学习算法虽然具有较好的行为识别效果,但是算

    2023年04月08日
    浏览(39)
  • BP神经网络入门(原理+matlab代码实现)

    对于很多刚入门的小伙伴来说,神经网络可能比较陌生。神经网络其实是对人认知物体的一种仿真。比如幼儿园老师再教小朋友认动物的时候,会让记住一些特征:比如兔子有长长的耳朵,爱吃萝卜和青菜.........,神经网络也是这样通过构建特征值之间的关系来预测一个较为可

    2023年04月23日
    浏览(46)
  • (九)人工智能应用--深度学习原理与实战--前馈神经网络实现MNST手写数字识别

    目标: 识别手写体的数字,如图所示: 学习内容: 1、掌握MNIST数据集的加载和查看方法 2、熟练掌握Keras建立前馈神经网络的步骤【重点】 3、掌握模型的编译及拟合方法的使用,理解参数含义【重点】 4、掌握模型的评估方法 5、掌握模型的预测方法 6、掌握自定义图片的处理与

    2024年02月13日
    浏览(44)
  • 人工智能|机器学习——循环神经网络的简洁实现

    循环神经网络的简洁实现 如何使用深度学习框架的高级API提供的函数更有效地实现相同的语言模型。 我们仍然从读取时光机器数据集开始。 定义模型 高级API提供了循环神经网络的实现。 我们构造一个具有256个隐藏单元的单隐藏层的循环神经网络层 rnn_layer 。 事实上,我们

    2024年02月04日
    浏览(60)
  • 人工智能(Pytorch)搭建模型1-卷积神经网络实现简单图像分类

    本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 目录 一、Pytorch深度学习框架 二、 卷积神经网络 三、代码实战 内容: 一、Pytorch深度学习框架 PyTorch是一个开源的深度学习框架,它基于Torch进行了重新实现,主要支持GPU加速计算,同时也可以在CPU上运行

    2024年02月03日
    浏览(62)
  • 【MATLAB】PSO_BP神经网络回归预测(多输入多输出)算法原理

    有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ PSO-BP神经网络回归预测(多输入多输出)算法是一种结合粒子群优化算法(PSO)和反向传播(BP)神经网络的混合算法。该算法的原理如下: 数据预处理:在进行PSO-BP神经网络回归预测之前,需要对数据进行

    2024年02月20日
    浏览(35)
  • 人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络(SNN)实现及应用

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络(SNN)实现及应用,脉冲神经网络(SNN)是一种基于生物神经系统的神经网络模型,它通过模拟神经元之间的电信号传递来实现信息处理。与传统的人工神经网络(ANN)不同,SNN 中的

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包