📄 yushenjingwangluo.m
字号:
%---------------------云神经网络程序分类-------------------------
%简化规则
%最小隶属度确定规则适用度
clc;clear;
A=[5.1,3.5,1.4,0.2
4.9,3.0,1.4,0.2
4.7,3.2,1.3,0.2
4.6,3.1,1.5,0.2
5.0,3.6,1.4,0.2
5.4,3.9,1.7,0.4
4.6,3.4,1.4,0.3
5.0,3.4,1.5,0.2
4.4,2.9,1.4,0.2
4.9,3.1,1.5,0.1
5.4,3.7,1.5,0.2
4.8,3.4,1.6,0.2
4.8,3.0,1.4,0.1
4.3,3.0,1.1,0.1
5.8,4.0,1.2,0.2
5.7,4.4,1.5,0.4
5.4,3.9,1.3,0.4
5.1,3.5,1.4,0.3
5.7,3.8,1.7,0.3
5.1,3.8,1.5,0.3
5.4,3.4,1.7,0.2
5.1,3.7,1.5,0.4
4.6,3.6,1.0,0.2
5.1,3.3,1.7,0.5
4.8,3.4,1.9,0.2
5.0,3.0,1.6,0.2
5.0,3.4,1.6,0.4
5.2,3.5,1.5,0.2
5.2,3.4,1.4,0.2
4.7,3.2,1.6,0.2
4.8,3.1,1.6,0.2
5.4,3.4,1.5,0.4
5.2,4.1,1.5,0.1
5.5,4.2,1.4,0.2
4.9,3.1,1.5,0.1
5.0,3.2,1.2,0.2
5.5,3.5,1.3,0.2
4.9,3.1,1.5,0.1
4.4,3.0,1.3,0.2
5.1,3.4,1.5,0.2
5.0,3.5,1.3,0.3
4.5,2.3,1.3,0.3
4.4,3.2,1.3,0.2
5.0,3.5,1.6,0.6
5.1,3.8,1.9,0.4
4.8,3.0,1.4,0.3
5.1,3.8,1.6,0.2
4.6,3.2,1.4,0.2
5.3,3.7,1.5,0.2
5.0,3.3,1.4,0.2
7.0,3.2,4.7,1.4
6.4,3.2,4.5,1.5
6.9,3.1,4.9,1.5
5.5,2.3,4.0,1.3
6.5,2.8,4.6,1.5
5.7,2.8,4.5,1.3
6.3,3.3,4.7,1.6
4.9,2.4,3.3,1.0
6.6,2.9,4.6,1.3
5.2,2.7,3.9,1.4
5.0,2.0,3.5,1.0
5.9,3.0,4.2,1.5
6.0,2.2,4.0,1.0
6.1,2.9,4.7,1.4
5.6,2.9,3.6,1.3
6.7,3.1,4.4,1.4
5.6,3.0,4.5,1.5
5.8,2.7,4.1,1.0
6.2,2.2,4.5,1.5
5.6,2.5,3.9,1.1
5.9,3.2,4.8,1.8
6.1,2.8,4.0,1.3
6.3,2.5,4.9,1.5
6.1,2.8,4.7,1.2
6.4,2.9,4.3,1.3
6.6,3.0,4.4,1.4
6.8,2.8,4.8,1.4
6.7,3.0,5.0,1.7
6.0,2.9,4.5,1.5
5.7,2.6,3.5,1.0
5.5,2.4,3.8,1.1
5.5,2.4,3.7,1.0
5.8,2.7,3.9,1.2
6.0,2.7,5.1,1.6
5.4,3.0,4.5,1.5
6.0,3.4,4.5,1.6
6.7,3.1,4.7,1.5
6.3,2.3,4.4,1.3
5.6,3.0,4.1,1.3
5.5,2.5,4.0,1.3
5.5,2.6,4.4,1.2
6.1,3.0,4.6,1.4
5.8,2.6,4.0,1.2
5.0,2.3,3.3,1.0
5.6,2.7,4.2,1.3
5.7,3.0,4.2,1.2
5.7,2.9,4.2,1.3
6.2,2.9,4.3,1.3
5.1,2.5,3.0,1.1
5.7,2.8,4.1,1.3
6.3,3.3,6.0,2.5
5.8,2.7,5.1,1.9
7.1,3.0,5.9,2.1
6.3,2.9,5.6,1.8
6.5,3.0,5.8,2.2
7.6,3.0,6.6,2.1
4.9,2.5,4.5,1.7
7.3,2.9,6.3,1.8
6.7,2.5,5.8,1.8
7.2,3.6,6.1,2.5
6.5,3.2,5.1,2.0
6.4,2.7,5.3,1.9
6.8,3.0,5.5,2.1
5.7,2.5,5.0,2.0
5.8,2.8,5.1,2.4
6.4,3.2,5.3,2.3
6.5,3.0,5.5,1.8
7.7,3.8,6.7,2.2
7.7,2.6,6.9,2.3
6.0,2.2,5.0,1.5
6.9,3.2,5.7,2.3
5.6,2.8,4.9,2.0
7.7,2.8,6.7,2.0
6.3,2.7,4.9,1.8
6.7,3.3,5.7,2.1
7.2,3.2,6.0,1.8
6.2,2.8,4.8,1.8
6.1,3.0,4.9,1.8
6.4,2.8,5.6,2.1
7.2,3.0,5.8,1.6
7.4,2.8,6.1,1.9
7.9,3.8,6.4,2.0
6.4,2.8,5.6,2.2
6.3,2.8,5.1,1.5
6.1,2.6,5.6,1.4
7.7,3.0,6.1,2.3
6.3,3.4,5.6,2.4
6.4,3.1,5.5,1.8
6.0,3.0,4.8,1.8
6.9,3.1,5.4,2.1
6.7,3.1,5.6,2.4
6.9,3.1,5.1,2.3
5.8,2.7,5.1,1.9
6.8,3.2,5.9,2.3
6.7,3.3,5.7,2.5
6.7,3.0,5.2,2.3
6.3,2.5,5.0,1.9
6.5,3.0,5.2,2.0
6.2,3.4,5.4,2.3
5.9,3.0,5.1,1.8];
%================分别用运各类各特征的已知数据生成云=========================================
%===================
xx=0;%重新记录各类各特征的序号
for ii=1:3 %类序号
for kk=1:4 %特征序号
xx=xx+1;
yy=0;
for jj=(ii-1)*50+1:ii*50
yy=yy+1;
B(xx,yy)=A(jj,kk);%存放每类每个特征值
end;
end;
end;
%================分别求每类每特征的云模型==============================================
for ii=1:xx
x=B(ii,:);
Ex=min(x);
En=mean(abs(x-Ex))*sqrt(pi/2);
He=sqrt(var(x)-En^2);;%求云模型函数
C(ii,1)=Ex;
C(ii,2)=En;
C(ii,3)=He;
end;
%====================生成网络及训练=========================================
%参数初始化
k=rand(1,3);
a=rand(1,4);
a=a';
a0=rand(1);
it=0.005;
Y_qiwang=[0.5 1 1.5];
hh=0;%记录训练总的样本个数
tt=300;%训练最大次数
while tt>0
Wcha=0;%类加误差
%取样本集中的一般训练网络
for jj=1:2:150
%确定样本的类别
if jj<=50
ii=1;
else if jj>100
ii=3;
else ii=2;
end;
end;
x=0;
%求每个样本每个特征对于类别的隶属度================================
for kk=1:4
X=A(jj,kk);
for ll=kk:4:kk+8
yun_shu=C(ll,:);
x=x+1;
muu=X_yun(yun_shu,X);%条件云函数确定隶属度====
mu(x)=muu;
end;
end;
%总推理规则========================
y1=A(jj,:)*a;
y1=y1+a0;
%提取每个样本在各类中的隶属度============================
for xx=1:3
ss=0;
for yy=xx:3:xx+9
ss=ss+1;
mu_lei(ss)=mu(yy);
end;
%确定每条规则的适用度==============================
ww=mu_lei(1);
for pp=2:length(mu_lei)
if ww>mu_lei(pp)
ww=mu_lei(pp);
end;
end;
mu_mu(xx)=ww; %记录每条规则的适用度 ===
end;
%计算每条规则的输出及其类加
YY=0;Mu=0;
for qq=1:3
y(qq)=k(qq)*y1;
Y(qq)=y(qq)*mu_mu(qq);
YY=YY+Y(qq);
Mu=Mu+mu_mu(qq);
end;
Mu=Mu+0.0000000001;
%解模糊(求网络输出值)=================
Y_out=YY/Mu
hh=hh+1 %记录训练样本的个数
%计算误差
E=(Y_qiwang(ii)-Y_out)^2;
Wcha=Wcha+E;
k_mu=0;
%===============计算调整参数=============================
for qq=1:3
k_wucha(qq)=-it*(Y_qiwang(ii)-Y_out)*Y(qq)/Mu;%k的调整参数
k_mu=k_mu+k(qq)*mu_mu(qq);
end;
for qq=1:4
a_wucha(qq)=-it*(Y_qiwang(ii)-Y_out)*k_mu*A(jj,qq)/Mu;%a的调整参数
end;
a0_wucha=-it*(Y_qiwang(ii)-Y_out)*k_mu/Mu;%a0的调整参数
%调整后的网络参数值
m=a';
a=m-a_wucha;
a=a';
k=k-k_wucha;
a0=a0-a0_wucha;
end;
%计算每次训练完的误差
WE(300-tt+1)=Wcha/75;
%检查误差是否达到标准==================
if WE(300-tt+1)<0.005;
break;
end;
tt=tt-1;
end;
%======================测试============================================
%取样本集的另一半进行测试
for ii=2:2:150
for kk=1:4
X=A(ii,kk);
for ll=kk:4:kk+8
yun_shu=C(ll,:);
x=x+1;
muu=X_yun(yun_shu,X);
mu(x)=muu;
end;
end;
yi=A(ii,:)*a;
yi=yi+a0;
for xx=1:3
ss=0;
for yy=xx:3:xx+9
ss=ss+1;
mu_lei(ss)=mu(yy);
end;
ww=mu_lei(1);
for pp=1:length(mu_lei)
if ww>mu_lei(pp);
ww=mu_lei(pp);
end;
end;
mu_mu(xx)=ww;
end;
YY=0;Mu=0;
for qq=1:3
y(qq)=k(qq)*yi;
Y(qq)=y(qq)*mu_mu(qq);
YY=YY+Y(qq);
Mu=Mu+mu_mu(qq);
end;
Mu=Mu+0.0000000001;
Y_out(ii)=YY/Mu;
end;
Y_out,a,a0,k,WE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -