本文主要是介绍【Matlab】RBF径向基神经网络时序预测算法(附代码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
资源下载: https://download.csdn.net/download/vvoennvv/88692108
一,概述
RBF 神经网络(Radial Basis Function Neural Network)是一种基于径向基函数的前向型神经网络。它的特点是具有快速的训练速度和良好的泛化性能。 RBF 神经网络的基本结构包括输入层、隐藏层和输出层。其中隐藏层是 RBF 层,它的神经元使用径向基函数来计算输入向量与每个神经元之间的距离,用这个距离值来作为神经元的激活函数。常用的径向基函数包括高斯函数、多项式函数等。 RBF 神经网络常用于分类和回归问题的解决,它的训练过程通常采用无监督学习算法,如 K 均值聚类算法,来对 RBF 层的中心进行初始化,然后再用监督学习算法,如误差反向传播算法,来调整网络的权值。 RBF 神经网络的优点在于它的泛化能力强、训练速度快、易于实现和调整等。但是它也存在一些缺点,如对参数的选择敏感、容易出现过拟合等。
二,代码
代码中文注释非常清晰,按照示例数据修改格式,替换数据集即可运行,数据集为excel。
部分代码如下:
%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行%% 导入数据(时间序列的单列数据)
result = xlsread('数据集.xlsx');%% 数据分析
num_samples = length(result); % 样本个数
kim = 15; % 延时步长(kim个历史数据作为自变量)
zim = 1; % 跨zim个时间点进行预测%% 构造数据集
for i = 1: num_samples - kim - zim + 1res(i, :) = [reshape(result(i: i + kim - 1), 1, kim), result(i + kim + zim - 1)];
end%% 数据集分析
outdim = 1; % 最后一列为输出
num_size = 0.7; % 训练集占数据集比例
num_train_s = round(num_size * num_samples); % 训练集样本个数
f_ = size(res, 2) - outdim; % 输入特征维度%% 划分训练集和测试集
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
N = size(P_test, 2);%% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);%% 创建网络
rbf_spread = 1000; % 径向基函数的扩展速度
net = newrbe(p_train, t_train, rbf_spread);%% 仿真测试
t_sim1 = sim(net, p_train);
t_sim2 = sim(net, p_test );%% 数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);%% 均方根误差
error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);......
三,运行结果
资源下载: https://download.csdn.net/download/vvoennvv/88692108
这篇关于【Matlab】RBF径向基神经网络时序预测算法(附代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!