RBF神经网络预测研究

给你一个RBF预测程序,你可以根据程序自己改。

全部清除;

x =[];

t =[];

x(1)= 0.22;

k = 4;

n = 900

N = 400

%生成了逻辑序列,第一个100被删除。

对于i=1:n

x(I+1)= k * x(I)*(1-x(I));

结束

x(1:800)= x(101:900);

%用x的前400个数据训练RBF神经网络

对于j=1:N

P(1:8,j)= X(j:j+7)';

结束

t = X(9:408);%目标数据

net1=newrb(P,T,0.001,1);%训练RBF神经网络

n 1 = 300;

%选择X的400-700个数据进行RBF神经网络测试。

对于j=1:N1

P1(1:8,j)= X(j+400:j+7+400)';

结束

t 1 = X(409:708);%目标数据

%模拟验证

a=sim(net1,p 1);%测试数据%sim的预测结果意味着模拟网络。

e = t 1-a;%一步预测误差

Mse = sqrt(e*e')/size(e,2)%均方误差

%画一幅画来描绘模拟结果

图(二)

plot(X(1:200));

轴([1 200-0.1 1.1]);

标题(' logistic混沌序列');

xlabel(' t ');

ylabel('震级');

图(三)

plot(1:300,T1,' b ',1:300,a,' r * ');

H =图例('混沌序列',' RBF神经网络一步预测值');

轴([1 300-0.5 1.5]);

继续

标题('混沌序列和一步预测值');

xlabel(' t ');

ylabel('震级');

图(4);

plot(e,' b-');

轴([1 300-0.02 0.02]);

标题('预测误差e ');

xlabel(' t ');

ylabel('震级');

至于k均值聚类:

%最基本的rbf算法之一,学习算法采用伪反函数。

%

%

%

%

%

%

%

%

%

%

%

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

全部清除;

全部关闭;

clc

%定义使用的变量

r = 1;%域半径,人工设置

nodenum = 0;%隐藏层节点的数量由实际数据和r***决定

input data =[];%输入矩阵

input path =“”;%存储原始输入数据的路径

node out =[];%隐藏层输入数组

netout =[];%网络输出数组

权重=[];%输出权重矩阵,这是唯一的权重。

input num = 0;输入维度百分比

output num = 0;%输出维度

center =[];%聚类中心

num train = 0;%学习样本的数量

row = 0;%学习样本的数量

sim row = 0;所有样本的百分比数

numtest = 0;%泛化样本的数量

实力= 1;%规范化处理中使用的范围通常是1。

yout =[];%输出的预期值

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%变量的初始化

r = 1;

input num = 9;

input path = ' e:\ yinjia \ data \ years un . dat ';

output num = 1;

simrow = 290

source=load(输入路径);

%保存源的副本,为反规范化做准备。

copysource = source

%规范化处理

source=normalize(来源,强度);

yout = source(input num+1:sim row+input num);

inputdata=phasespace(source,inputnum,sim row);

row = 250

numtrain = row

numtest = sim row-row;

%将第一个人输入变量设置为初始中心

初始化后,% center的位置不会改变。

center=inputdata(1,:)';

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%启动了简单群集。

%的基本思想是:给定一个固定的邻域半径,中心点邻域半径内的点视为

%是邻域的点;对于半径外的点,将不在半径内的第一个点作为新的中心点。

% design a function iscenter计算一个点是否为中心点。

对于步骤=2:行

if iscenter(inputdata(step,)',center,r)

center=[center inputdata(step,)'];

nodenum = nodenum+1;

end % this end for is center(input data(步骤,))

步骤=2的结束% this end:row

聚类完成百分比。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%准备神经网络的正向计算。

[center row nodenum]= size(center);

%网络的初始化

nodeout=zeros(row,nodenum);

netout=zeros(row,output num);

weight=zeros(nodenum,output num);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%网络的计算

对于步长=1:行

对于步骤1=1:nodenum

nodeout(step,step 1)= GaussRadialBasisFunction(input data(step,:)',...

center(:,step1),r);

end %此步骤结束1=1:nodenum

end %this end for step=1:row

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%使用伪逆来计算权重

weight = pinv(node out)* yout(1:250);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

用于模拟的百分比

对于step=1:simrow

对于步骤1=1:nodenum

nodeout(step,step 1)= GaussRadialBasisFunction(input data(step,:)',...

center(:,step1),r);

end %此步骤结束1=1:nodenum

end % this end for step = 1:sim row

mydata = nodeout * weight

%反规格化

mydata=unnomal(mydata,copysource,strength);

rl data = copy source(input num+1:input num+sim row);

plot(rl data);坚持住;plot(mydata,' r ');

%计算一个评价函数

rmsetest =(norm(rl data(num train+1:simrow)-my data(num train+1:simrow))...

^2/(numtest-1))^0.5

有几个小程序,你应该会自己写。