%径向基网络(先聚类,后训练)
%先以K-均值聚类算法聚类,确定聚类中心,后训练网络,高斯函数的宽度参数取定值sigma=max([sum((z1-z2).^2),sum((z1-z3).^2),sum((z3-z2).^2)])/sqrt(2*3)
% 运行时间较长,查全率、查准率也比较差,原因可能是某些不同样本之间特征值差别不大,导致聚类不准确,聚类中心与实际中心不一致,(结果与聚类训练同时进行
% 的差别不大)
clear Re Pr
c=load('ccc.txt');
q1=3 ;%q1为常向量,表示神经元的个数
Ir=0.0121; max_epoch=1500;
EE=zeros(length(q1),max_epoch);
res=zeros(size(q1));%res将要存储误差向量,这里先置零
aa=1;
clear oi ok wwji wwkj b1 b2 deltak deltao yy result cout1 count2 E
tic
ceshiyangben=c;err_goal=0.05;
for i=1:59
target(i,:)=[0 0 1];
end
for i=60:131
target(i,:)=[0 1 0];
end
for i=132:178
target(i,:)=[1 0 0];
end
E=[];T=target';%mubiaoxiangliang
q=q1(aa);
[m,n]=size(ceshiyangben);[s2,s1]=size(T);
for i=2:n;
for j=1:m
ceshiyangben(j,i)=ceshiyangben(j,i)/max(ceshiyangben(:,i));
end
end %归一化
w=ceshiyangben';
z1=w(:,1);z2=w(:,2);z3=w(:,3); I=1; %1
for j=1:15
w1=[];w2=[];w3=[];
for i=1:178
if (sqrt(sum(w(:,i)-z1(:,j))^2)<sqrt(sum(w(:,i)-z2(:,j))^2))&(sqrt(sum(w(:,i)-z1(:,j))^2)<sqrt(sum(w(:,i)-z3(:,j))^2))
w1=[w1,w(:,i)];[h,n1]=size(w1);
else if (sqrt(sum(w(:,i)-z2(:,j))^2)<sqrt(sum(w(:,i)-z1(:,j))^2))&(sqrt(sum(w(:,i)-z2(:,j))^2)<sqrt(sum(w(:,i)-z3(:,j))^2))
w2=[w2,w(:,i)];[h,n2]=size(w2);
else w3=[w3,w(:,i)];[h,n3]=size(w3);
end
end
end
z1=[z1,mean(w1')'];z2=[z2,mean(w2')'];z3=[z3,mean(w3')'];
w11=w1;w22=w2;w33=w3;
[a,i]=size(z1); [a,k]=size(z2); [a,m]=size(z3);
if (z1(:,i)==z1(:,i-1))&(z2(:,k)==z2(:,k-1))&(z3(:,m)==z3(:,m-1))
break
end
end
Wki=0.2*rands(3,q); %
b2=0.1*rands(3,1);%—随机给定隐含层、输出层偏值
wwkj=[b2 Wki];
P=ceshiyangben';
count1=zeros(1,3);
count2=zeros(1,3);
z1=z1(:,j);z2=z2(:,j);z3=z3(:,j); %聚合中心
r1=sqrt(sum((P-z1*ones(1,178)).^2));r2=sqrt(sum((P-z2*ones(1,178)).^2));r3=sqrt(sum((P-z3*ones(1,178)).^2)); % ||X-W||
for kk=1:max_epoch
sigma=max([sum((z1-z2).^2),sum((z1-z3).^2),sum((z3-z2).^2)])/sqrt(2*3);
ojj1=exp(-r1.^2/(2*sigma^2)); %高斯函数
ojj2=exp(-r2.^2/(2*sigma^2));
ojj3=exp(-r3.^2/(2*sigma^2));
ojj=[ojj1;ojj2;ojj3];
oj1=[-ones(178,1) ojj'];
netk=wwkj*oj1';
oo=logsig(netk);%3-178
errr=T-oo;
sse=mse(errr);
deltao=errr.*oo.*(ones(3,178)-oo);%3-178
if(sse<err_goal)
break;
end
wwkj=wwkj+Ir*(deltao*oj1);
E=[E,sse];
end
res(aa)=norm(errr);
EE(aa,:)=E;
toc
%yangbenceshi
r1=sqrt(sum((P-z1*ones(1,178)).^2));r2=sqrt(sum((P-z2*ones(1,178)).^2));r3=sqrt(sum((P-z3*ones(1,178)).^2));
ojjj1=exp(-r1.^2/(2*sigma^2)); %11 178
ojjj2=exp(-r2.^2/(2*sigma^2));
ojjj3=exp(-r3.^2/(2*sigma^2));
ojjj=[ojj1;ojj2;ojj3];
ojj1=[-ones(178,1) ojj'];
netkk=wwkj*oj1';
ooo=logsig(netk);%3-178
for j=1:s2
for i=1:178
yy(j,i)=round(oo(j,i));
end
end
for h=1:178
if yy(:,h)==T(:,h)
if h<=59
result(1,h)=1;count1(1,1)=count1(1,1)+1;
elseif h<=131&h>59
result(1,h)=2;count1(1,2)=count1(1,2)+1;
elseif h<=178&h>131
result(1,h)=3;count1(1,3)=count1(1,3)+1;
end
else
result(1,h)=0;
end
end
Rresult(aa,:)=result;
for hh=1:178
if yy(:,hh)==[0 0 1]'
count2(1,1)=count2(1,1)+1;
elseif yy(:,hh)==[0 1 0]'
count2(1,2)=count2(1,2)+1;
elseif yy(:,hh)==[1 0 0]'
count2(1,3)=count2(1,3)+1;
end
end
Re(aa,:)=count1./[59 72 47];
Pr(aa,:)=count1./count2;
for dd=1:length(q1)
plot(EE(dd,:))
hold on
end
number=find(res==min(res));
Re3=Re
Pr3=Pr
figure
plot(Rresult(1,:)')
没有合适的资源?快使用搜索试试~ 我知道了~
RBF.rar_MATLAB code for RBF _RBF matlab code_RBF 分类器_RBF网络分类_神经网
共4个文件
m:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 148 浏览量
2022-09-14
16:15:27
上传
评论
收藏 6KB RAR 举报
温馨提示
采用神经网络实现分类器的训练,训练出来的网络分类结果好.
资源详情
资源评论
资源推荐
收起资源包目录
RBF.rar (4个子文件)
RBF_yuchuli_xunlian.m 4KB
RBF_julei_xunlian.m 4KB
RBF_ybzx_xunlian.m 3KB
RBF_ybzx_eta.m 3KB
共 4 条
- 1
局外狗
- 粉丝: 67
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0