matlab怎么实现基于广义神经网络GRNN网络入侵聚类

发布时间:2022-01-14 10:31:32 作者:iii
来源:亿速云 阅读:299

这篇文章主要介绍了matlab怎么实现基于广义神经网络GRNN网络入侵聚类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇matlab怎么实现基于广义神经网络GRNN网络入侵聚类文章都会有所收获,下面我们一起来看看吧。

%% 清空环境文件

clear

clc


%% 提取攻击数据

%攻击样本数据

load netattack;

P1=netattack;

T1=P1(:,39)';

P1(:,39)=[];


%数据大小

[R1,C1]=size(P1);

csum=20;  %提取训练数据多少


%% 模糊聚类

data=P1;

[center,U,obj_fcn] = fcm(data,5);    

for i=1:R1

    [value,idx]=max(U(:,i));

    a1(i)=idx;

end


%% 模糊聚类结果分析

Confusion_Matrix_FCM=zeros(6,6);

Confusion_Matrix_FCM(1,:)=0:5;

Confusion_Matrix_FCM(:,1)=[0:5]';

for nf=1:5

    for nc=1:5

        Confusion_Matrix_FCM(nf+1,nc+1)=length(find(a1(T1==nf)==nc));

    end

end


%% 网络训练样本提取

cent1=P1(a1==1,:);cent1=mean(cent1);

cent2=P1(a1==2,:);cent2=mean(cent2);

cent3=P1(a1==3,:);cent3=mean(cent3);

cent4=P1(a1==4,:);cent4=mean(cent4);

cent5=P1(a1==5,:);cent5=mean(cent5);


%提取范数最小为训练样本

for n=1:R1

    ecent1(n)=norm(P1(n,:)-cent1);

    ecent2(n)=norm(P1(n,:)-cent2);

    ecent3(n)=norm(P1(n,:)-cent3);

    ecent4(n)=norm(P1(n,:)-cent4);

    ecent5(n)=norm(P1(n,:)-cent5);

end

for n=1:csum

    [~, me1]=min(ecent1);

    [~, me2]=min(ecent2);

    [~, me3]=min(ecent3);

    [~, me4]=min(ecent4);

    [va, me5]=min(ecent5);

    ecnt1(n,:)=P1(me1(1),:);ecent1(me1(1))=[];tcl(n)=1;

    ecnt2(n,:)=P1(me2(1),:);ecent2(me2(1))=[];tc2(n)=2;

    ecnt3(n,:)=P1(me3(1),:);ecent3(me3(1))=[];tc3(n)=3;

    ecnt4(n,:)=P1(me4(1),:);ecent4(me4(1))=[];tc4(n)=4;

    ecnt5(n,:)=P1(me5(1),:);ecent5(me5(1))=[];tc5(n)=5;

end

P2=[ecnt1;ecnt2;ecnt3;ecnt4;ecnt5];T2=[tcl,tc2,tc3,tc4,tc5];

k=0;


%% 迭代计算

for nit=1:10%开始迭代

    %% 广义神经网络聚类

    net = newgrnn(P2',T2,50);   

    %训练广义网络

    

    a2=sim(net,P1') ;  

    %预测结果

    %输出标准化(根据输出来分类)

    a2(a2<=1.5)=1;

    a2(a2>1.5&a2<=2.5)=2;

    a2(a2>2.5&a2<=3.5)=3;

    a2(a2>3.5&a2<=4.5)=4;

    a2(a2>4.5)=5;

    

    %% 网络训练数据再次提取

    cent1=P1(a2==1,:);cent1=mean(cent1);

    cent2=P1(a2==2,:);cent2=mean(cent2);

    cent3=P1(a2==3,:);cent3=mean(cent3);

    cent4=P1(a2==4,:);cent4=mean(cent4);

    cent5=P1(a2==5,:);cent5=mean(cent5);

    

    for n=1:R1%计算样本到各个中心的距离

        ecent1(n)=norm(P1(n,:)-cent1);

        ecent2(n)=norm(P1(n,:)-cent2);

        ecent3(n)=norm(P1(n,:)-cent3);

        ecent4(n)=norm(P1(n,:)-cent4);

        ecent5(n)=norm(P1(n,:)-cent5);

    end

    

    %选择离每类中心最近的csum个样本

    for n=1:csum

        [~, me1]=min(ecent1);

        [~, me2]=min(ecent2);

        [~, me3]=min(ecent3);

        [~, me4]=min(ecent4);

        [va, me5]=min(ecent5);

        ecnt1(n,:)=P1(me1(1),:);ecent1(me1(1))=[];tc1(n)=1;

        ecnt2(n,:)=P1(me2(1),:);ecent2(me2(1))=[];tc2(n)=2;

        ecnt3(n,:)=P1(me3(1),:);ecent3(me3(1))=[];tc3(n)=3;

        ecnt4(n,:)=P1(me4(1),:);ecent4(me4(1))=[];tc4(n)=4;

        ecnt5(n,:)=P1(me5(1),:);ecent5(me5(1))=[];tc5(n)=5;

    end

    

    p2=[ecnt1;ecnt2;ecnt3;ecnt4;ecnt5];

    T2=[tc1,tc2,tc3,tc4,tc5];


    %统计分类结果

    Confusion_Matrix_GRNN=zeros(6,6);

    Confusion_Matrix_GRNN(1,:)=0:5;

    Confusion_Matrix_GRNN(:,1)=[0:5]';

    for nf=1:5

        for nc=1:5

            Confusion_Matrix_GRNN(nf+1,nc+1)=length(find(a2(T1==nf)==nc));

        end

    end

    pre2=0;

    for n=2:6

        pre2=pre2+max(Confusion_Matrix_GRNN(n,:));

    end

    pre2=pre2/R1*100;

end

关于“matlab怎么实现基于广义神经网络GRNN网络入侵聚类”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“matlab怎么实现基于广义神经网络GRNN网络入侵聚类”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. matlab中神经网络的通用函数有哪些
  2. matlab神经网络拟合非线性函数怎么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

grnn matlab

上一篇:matlab怎么实现SOM神经网络的数据分类

下一篇:springboot整合quartz定时任务框架的方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》