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
有几个小程序,你应该会自己写。