python rbf神经网络_原创,基于径向基函数(RBF)神经网络RBF网络的举例应用!

function RBF_NN_Example()

clc

clear all

%  创建训练样本

%  线性函数的训练

Mn_Train=100*[rand(1,5) rand(1,5)+0.5 rand(1,5)+1 rand(1,5)+1.5;...

rand(1,5) rand(1,5)+0.5 rand(1,5)+1 rand(1,5)+1.5];

n=size(Mn_Train,2);

%  Mn_Train 为2*20的矩阵

Nn_Train=[2*Mn_Train;3*Mn_Train(1,:)];

%  Nn_Train 为3*20的矩阵

%  将训练样本进行聚类分析,分为4类

H=4;

%  将样本归一化

[SampleX,pmin,pmax,SampleY,tmin,tmax]=premnmx(Mn_Train,Nn_Train);

%  将训练样本进行聚类并形成聚类中心

options=statset('Display','final');

[index,center]=kmeans(SampleX',H,'Distance','city',...

'Replicates',10,'Options',options);

figure(1)

X=SampleX';

set(figure(1),'color','w')

hold on

plot(X(index==1,1),X(index==1,2),'ro','markersize',9,'markeredgecolor',...

'k','markerfacecolor','r')

plot(X(index==2,1),X(index==2,2),'go','markersize',9,'markeredgecolor',...

'k','markerfacecolor','g')

plot(X(index==3,1),X(index==3,2),'mo','markersize',9,'markeredgecolor',...

'k','markerfacecolor','m')

plot(X(index==4,1),X(index==4,2),'bo','markersize',9,'markeredgecolor',...

'k','markerfacecolor','b')

plot(center(:,1),center(:,2),'ko','markersize',15,'markeredgecolor',...

'k','markerfacecolor','k')

title('样本聚类','fontsize',16)

grid on

hold off

%  spread径函数的扩展速度设置

spread=0.3;

%  基于高斯函数的隐藏层神经元的输出

%  形成4*20的矩阵

%  阈值

b=ones(1,H)*0.8326/spread;

center=center';

Hidden_Out=zeros(H,size(SampleX,2));

for i=1:H

for j=1:size(SampleX,2)

Hidden_Out(i,j)=exp(-b(i)*(norm(SampleX(:,j)-center(:,i)).^2));

end

end

%  对输出层权重的训练,最速下降法

MaxIteration=1000;

Iteration=0;

tol=1e-3;

lemda=0.001;

%  初始化参数和阈值

N=size(SampleY,1);

W=0.5*rand(N,H)-0.1;

B=0.5*rand(N,1)-0.1;

%  网络输出值

NetOut=W*Hidden_Out+repmat(B,1,n);

Resid=SampleY-NetOut;

%  均方误

MSE_error=sumsqr(Resid)./(N*n);

%  训练权重开始

while Iteration

NetOut=W*Hidden_Out+repmat(B,1,n);

Resid=SampleY-NetOut;

MSE_error=sumsqr(Resid)./(N*n);

Delta=Resid;

%  最速下降训练

dW=Delta*Hidden_Out';

dB=Delta*ones(n,1);

W=W+lemda*dW;

B=B+lemda*dB;

if MSE_error

break;

end

Iteration=Iteration+1;

end

NetOut=W*Hidden_Out+repmat(B,1,n);

Samplefit=postmnmx(NetOut,tmin,tmax);

%  将拟合样本和原样本比较

figure(2)

set(figure(2),'color','w')

hold on

subplot(3,1,1)

hold on

plot(1:20,Nn_Train(1,:),'ro-','markersize',8)

plot(1:20,Samplefit(1,:),'bo-','markersize',8)

title('样本拟合对比')

subplot(3,1,2)

hold on

plot(1:20,Nn_Train(2,:),'ro-','markersize',8)

plot(1:20,Samplefit(2,:),'bo-','markersize',8)

title('样本拟合对比')

subplot(3,1,3)

hold on

plot(1:20,Nn_Train(3,:),'ro-','markersize',8)

plot(1:20,Samplefit(3,:),'bo-','markersize',8)

title('样本拟合对比')

hold off

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值