MATLABGRNN广义回归神经网络数据预测编程

2024-02-22 21:58

本文主要是介绍MATLABGRNN广义回归神经网络数据预测编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、理论基础

广义回归神经网络是径向基神经网络的一种,GRNN具有很强的非线性映射能力和学习速度,比RBF具有更强的优势,网络最后普收敛于样本量集聚较多的优化回归,样本数据少时,预测效果很好,   网络还可以处理不稳定数据。 广义回归神经网络对x的回归定义不同于径向基函数的对高斯权值的最小二乘法叠加,他是利用密度函数来预测输出。 假定x,y为两个随机变量,联合概率密度为 f(x,y)。 我们就得到以下公式: (x0)=F(y*f(x0,y))/F(f(x0,y)). F代表积分。 (x0)就是y在x0条件下在预测输出。 x0是的观测值。 现在未知数就是f(x,y)。 怎样估计已知数值而未知分布的密度函数呢?这里我们使用Parzen非参数估计方法。 窗口函数选择为高斯窗口。 得到下式 y(x0)=F(y*exp(-d))/F(exp(-d))。 d代表的就是离中心的距离,exp(-d)就是径向基函数隐含层的输出。

二、程序

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; disp(['最佳spread值为',num2str(desired_spread)]) disp(['此时最佳输入值为']) desired_input disp(['此时最佳输出值为']) desired_output %% 采用最佳方法建立GRNN网络 net=newgrnn(desired_input,desired_output,desired_spread); p_test=p_test'; 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))])

[+vx  matlab56,讨论技术问题]   

三、结果展示

这篇关于MATLABGRNN广义回归神经网络数据预测编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736618

相关文章

2024年少儿编程赛事时间表整理

01 信息学奥赛路线比赛 来源:https://www.noi.cn/ 首先,信息学奥赛是升学最有帮助的一个赛事了,从CSP-J/P开始到NOIP再到最后的NOI,对科技特长生、高考加分都有较大裨益,但相对难度也是最大的。 小学可以参加的是CSP-J比赛,但是和初中生一起考试,不占优势,胜在早入门,可以提前体验打好基础,这也是为什么现在越来越多小学生开始学习C++语言的缘故。 02

使用libcurl 函数库获取网页数据代码

使用libcurl 获取网页数据代码 /*** File: w3G.c* libcurl is an open source lib for url.** Copyright: (c) T-ware Inc.** Function: get 3G data from internet** Author: Tody Guo* Date: 2013-10-06* **///#

UEFI EDKII 编程学习

环境搭建部分 第一步: 下载EDK2 https://sourceforge.net/projects/edk2/files/latest/download?source=files  第二步: 将下载的UDK2015.Complete.MyWorkSpace中的BaseTools(Windows).zip解压到自己定义的工作目录下,例如:E:\code\edkWorkSpace\

go并发编程以及socket通信的理解

go并发编程以及socket通信的理解 文章目录 go并发编程以及socket通信的理解一、管道的简单使用二、go中的socket实现通信 一、管道的简单使用 " golang不是通过共享内存来通信,而是通过通信来共享内存 " 1、go简单初始化 // golang不是通过共享内存来通信,而是通过通信来共享内存func a1() {// 声明初始化 channelvar

【Linux】序列化与反序列化{服客编程/守护进程/JSON}

文章目录 1.引入2. 静态成员函数3.TCP:传输控制协议4.守护进程4.0前台进程4.1介绍4.2认识4.3会话4.3ps axj4.4理解4.5/dev/null4.6守护进程和孤儿进程 5.JSON6.完整代码6.1Makefile6.2Socket.hpp6.3Protocol.hpp6.4Log.hpp6.5Daemon.hpp6.6TcpServer.hpp6.7Client.

深度学习学习日记4.14 数据增强 Unet网络部分

数据增强 transforms.Compose([:这表示创建一个转换组合,将多个数据转换操作串联在一起 transforms.RandomHorizontalFlip():这个操作是随机水平翻转图像,以增加数据的多样性。它以一定的概率随机地水平翻转输入的图像。 transforms.Resize(image_size):这个操作用于将图像调整为指定的大小。image_size 是所需的输出图像

1038: 顺序表中重复数据的删除

解法: #include<iostream>#include<vector>#include<algorithm>using namespace std;int main() {int n, k;cin >> n;vector<int> arr(n);for (auto& x : arr) cin >> x;cin >> k;int sum = 0;for (auto x : arr

Niobe开发板OpenHarmony内核编程开发——定时器

本示例将演示如何在Niobe Wifi IoT开发板上使用cmsis 2.0 接口进行定时器开发 Timer API分析 osTimerNew() /// Create and Initialize a timer./// \param[in] func function pointer to callback function./// \param[i

sqlite3 读取表数据

先上一段 sample   #include <stdio.h>#include <string.h>#include "sqlite3.h"int main(){sqlite3 *db;char *zErrMsg = 0;int rc;char **result;int row, column;int i, j;rc = sqlite3_open("gt_db.db",

java 将 json 数据转为 java 中的对象

一、准备 json 数据 {"name": "mike","age": 17,"gender": 1,"subject": ["math","english"]} 二、对应的java对象 package com.demo.controller;import lombok.Data;import java.util.List;@Datapublic class Student {pri