⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yushenjingwangluo.m

📁 基于云理论的自动诊断代码,效果很好,有研究的人可以参考
💻 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 + -