m基于kmeans和SVM的网络入侵数据分类算法matlab仿真

news2024/12/28 5:57:14

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       首先计算整个数据集合的平均值点,作为第一个初始聚类中心C1;

       然后分别计算所有对象到C1的欧式距离d,并且计算每个对象在半径R的范围内包含的对象个数W。

       此时计算P=u*d+(1-u)*W,所得到的最大的P值所对应的的对象作为第二个初始聚类中心C2。

       同样的方法,分别计算所有对象到C2的欧式距离d,并且计算每个对象在半径R的范围内包含的对象个数W,所得到的最大的P值所对应的的对象作为第二个初始聚类中心C3。

       从这三个初始聚类中心开始聚类划分。对于一个待分类的对象,计算它到现有聚类中心的距离,若(这个距离)<(现有各个聚类中心距离的最小值),则将这个待分类对象分到与它相距最近的那一类;如果(这个距离)>(现有各个聚类中心距离的最小值),则这个待分类对象就自成一类,成为一个新的聚类中心,然后对所有对象重新归类。

        如果找到新的聚类中心,在重新计算聚类的中心后。对目前形成的K+1 个聚类计算 DBInew 的值,和未重新分配对象到这 k+1 个类之前计算的 DBIold进行比较,如果 DBInew <DBIold,则这个新找到的聚类中心可以作为新的聚类中心,否则将终止本次查找 k 的工作,并恢复到 DBIold 的状态。当所有这样符合新类产生条件的数据对象的 DBI 值都大于 DBIold 时,则确定再没有新的类产生,则确定了最终聚类个数为 k,可以进行最终的分配对象工作。

聚类仿真图:

1.和K-means算法比较的检测率

2.和K-means算法比较的误判率

       特征提取:提取对检测最有用、最利于检测出攻击的那些参数。所用到的特征提取方案是利用“信息增益”,选出各特征参数中信息增益(Information Gain)最大的那些特征在检测时使用,这个做之前应该需要对数据先标准化和归一化一下。具体操作:

        究竟选多少个特征可以让检测的精度最高呢?我论文里是先将各个特征的信息增益从高到低排序,然后依次往下取K个,用K-means算法对节点进行分类达到检测的作用,计算当检测率最高的时候所对应 K值,即意为选多少个特征。

        经过特征提取后,之后所说的样本,他们的属性都只由特征提取后的那些特征来代表了。

        SVM训练样本筛选:假定有正常和攻击两类样本,将两类样本分别用K-means聚类,将这些聚类中心点作为新的样本点。然后在正常类中,计算每个新样本点在异常类中距离自己最近的M(假定M=3)个样本点,从而在异常类中假设找到P个样本点。异常类中的这P个样本点找到在正常类中距离自己最近的M个样本点,假定找到了Q个样本点。此时,这P+Q个样本点就是新选出的SVM训练样本。

2.仿真效果预览

matlab2013b仿真结果如下:

3.MATLAB核心程序


is_continue = 1;
C           = [C1;C2;C3];
R           = [R1;R2;R3];
Leg         = ones(length(Attack_Dat),1);
K           = 3;
CNT         = 0;
while(is_continue == 1)
    CNT = 0;
    for i = 1:length(Attack_Dat)
        for j = 1:size(C,1)
            d(i,j) = func_dis(Attack_Dat(i,:),C(j,:));
        end
        [VV,II] = min(d(i,:));
        if VV <= min(R)
            Leg(i) = II;
            CNT = CNT + 1;
        else
            K = K + 1;
            Leg(i) = K;
            C = [C;Attack_Dat(i,:)];
            R = [R;alpha*mean(func_dis(Attack_Dat,Attack_Dat(i,:)))];
        end
    end 
    
    if CNT == length(Attack_Dat)
       is_continue = 0;
    else
       is_continue = 1; 
    end
end

Tmps = unique(Leg);
if min(Tmps) > 1
   Leg = Leg - (min(Tmps)-1);
end
Leg = sort(Leg);
Leg = Leg-1;
%检测率
Right1 = 100*(length(find(Leg == T))/length(Attack_Dat))
%误判率
Error1 = 100*(1-length(find(Leg == T))/length(Attack_Dat))

%对比算法K-means  
%对比算法K-means    
KK         = length(unique(Leg));
opts       = statset('Display','final');
X          = Attack_Dat;
[idx,ctrs] = kmeans(X,KK,'Distance','city','Replicates',10,'Options',opts);
idx        = sort(idx);
%检测率
Right2 = 100*(length(find(idx == T))/length(X))
%误判率
Error2 = 100*(1-length(find(idx == T))/length(X))


attack1 = [Attack_Dat(:,:),Leg];

%步骤3:SVM
%步骤3:SVM
%特征选取时,选取的特征数量所对应的的检测率的仿真图
POS = attack1(1:length(Attack_Dat)/2,:);
NEG = attack1(length(Attack_Dat)/2+1:end,:);
%将数据随机产生训练集合和测试集合
INDD= (1:length(POS));


Attack_Dat_train = [POS(INDD(1:round(2/3*length(POS))),1:end-1);NEG(INDD(1:round(2/3*length(POS))),1:end-1)];
T_train          = [POS(INDD(1:round(2/3*length(POS))),end)    ;NEG(INDD(1:round(2/3*length(POS))),end)];

Attack_Dat_test = [POS(INDD(round(2/3*length(POS)))+1:end,1:end-1);NEG(INDD(round(2/3*length(POS)))+1:end,1:end-1)];
T_test          = [POS(INDD(round(2/3*length(POS)))+1:end,end)    ;NEG(INDD(round(2/3*length(POS)))+1:end,end)];


%训练集合
POS_train = Attack_Dat_train(find(T_train==1),:);
NEG_train = Attack_Dat_train(find(T_train==2),:);
%测试集合
POS_test = Attack_Dat_test(find(T_test==1),:);
NEG_test = Attack_Dat_test(find(T_test==2),:);


%随机选择K个样本进行分类,并计算对应的检测率
K     = 60;
KK    = 2;
Alpha = 0.7;
Indes = 0;

Index = 0;
Indes = Indes + 1;

tic
Index = Index + 1;

IND        = randperm(length(POS_train));
POS_train2 = POS_train(IND(1:K),:);
NEG_train2 = NEG_train(IND(1:K),:);
%Kmeans
opts       = statset('Display','final');
X          = [POS_train2;NEG_train2];
[idx,ctrs] = kmeans(X,KK,'Distance','city','Replicates',10,'Options',opts);
%准备SVM训练分类——SVM训练样本的选择
Q          = round(Alpha*size(POS_train2,1));
if Q == 0
   Q = 1;
end
P          = round(Alpha*size(NEG_train2,1));
if P == 0
   P = 1;
end    

%正样本
d_pos      = func_dis2(POS_train2,ctrs(1,:));
%选择距离最近的M个
[Vpos,Ipos]= sort(d_pos);
POS_train_final = POS_train2(Ipos(1:Q),:);
%负样本
d_neg      = func_dis2(NEG_train2,ctrs(2,:));
%选择距离最近的N个
[Vneg,Ineg]= sort(d_neg);
NEG_train_final = NEG_train2(Ipos(1:P),:);

%SVM训练
options = optimset('maxiter',10000);
Ps      = [POS_train_final;NEG_train_final];
Ts      = [ones(length(POS_train_final),1);2*ones(length(NEG_train_final),1)];
SvmNet  = svmtrain(Ps,(Ts),'Kernel_Function','linear','Polyorder',2,'quadprog_opts',options);  

%SVM测试
Test_Dat = [POS_test;NEG_test];
Classify = svmclassify(SvmNet,Test_Dat);

%计算检测率
times(Index) = toc;
Right(Index) = length(find((Classify)==T_test))/length(T_test);
clc;
05_016_m

4.完整MATLAB

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

非零基础自学Golang 第17章 HTTP编程(上) 17.2 HTTP客户端 17.2.3 发起GET请求

非零基础自学Golang 文章目录非零基础自学Golang第17章 HTTP编程(上)17.2 HTTP客户端17.2.3 发起GET请求第17章 HTTP编程(上) 17.2 HTTP客户端 17.2.3 发起GET请求 从现在开始我们将会学习如何使用Go语言模拟浏览器发起HTTP请求。 发起请求前需要创建一个请求对象&#xff…

WINDOWS下安装ORACLE客户端报错:无法访问临时位置

WINDOWS2016&#xff08;虚拟机&#xff09;安装oracle11g碰到“无法访问临时位置”的问题&#xff0c;详细信息如下&#xff1a; INS-30131] 执行安装程序验证所需的初始设置失败。 原因 - 无法访问临时位置。 操作 - 请确保当前用户具有访问临时位置所需的权限。 附加信息: …

【DETR目标检测】关键词:Decoder。Encoder。query向量。注意力机制。

声明:仅学习使用~ 目录 1、目标检测的基本思想2、整体网络架构3、位置信息初始化query向量4、注意力机制的作用方法5、训练过程的策略1、目标检测的基本思想 2015年,faster-rcnn; 2016年,YOLO; NMS:非极大值抑制; 2、整体网络架构 backbone 即先通过CNN 拿到每个pat…

Transformers18~ Diffusion

还是Transformers,来自 UC 伯克利的 William Peebles 以及纽约大学的谢赛宁撰文揭秘扩散模型中架构选择的意义&#xff0c;并为未来的生成模型研究提供经验基线。 近几年&#xff0c;在 Transformer 的推动下&#xff0c;机器学习正在经历复兴。过去五年中&#xff0c;用于自然…

【概述】请求报文在网络各层中的具体传输

请求报文在网络各层中的具体传输电脑中之间的通信&#xff0c;可以看成为两个应用进程之间的通信&#xff1b;一个请求从客户端到服务器端&#xff0c;通常需要经过三个阶段&#xff1a; 客户端路由转发阶段服务器端 客户端请求服务端 请求在客户端中每一层的具体传输数据 应…

LeetCode 322 周赛

2490. 回环句 句子 是由单个空格分隔的一组单词&#xff0c;且不含前导或尾随空格。 例如&#xff0c;"Hello World"、"HELLO"、"hello world hello world" 都是符合要求的句子。 单词 仅 由大写和小写英文字母组成。且大写和小写字母会视作不…

【Call for papers】2023年CCF-A类会议截稿日期(实时更新)

会议简称会议名称类别截稿日期链接S&P-2023IEEE Symposium on Security and Privacy网络与信息安全2022年12月2日Call for papersUSENIX ATC-2023USENIX Annul Technical Conference计算机体系结构/并行与分布计算/存储系统2023年1月12日Call for papersIJCAI-2023Internat…

H5后台读写CAD文件

说明 后台提供mxconvert.js程序&#xff0c;该程序使用JS编程&#xff0c;可以在后台实现读写CAD文件、读取CAD图纸数据等操作。 如何使用mxconvert.js转CAD图纸到梦想格式 1.Windows调用&#xff0c;进入 Bin\Release目录&#xff0c;命令行调用 node.exe mxconvert.js 1.d…

【推荐】动力锂电池及BMS系统介绍资料合集

锂动力电池是20世纪开发成功的新型高能电池。这种电池的负极是金属锂&#xff0c;正极用MnO2&#xff0c;SOCL2&#xff0c;(CFx)n等。70年代进入实用化。因其具有能量高、电池电压高、工作温度范围宽、贮存寿命长等优点&#xff0c;已广泛应用于军事和民用小型电器中&#xff…

部署AI平台 宝马集团正在掀起新一轮数字化改革浪潮

数字化转型作为当代企业创新求变的重要突破口&#xff0c;成为各行各业推进持续发展的大热趋势。但在企业的在数字化征程中&#xff0c;却暗藏多重陷阱&#xff0c;数据孤岛、标准不一、质量太差、治理滞后、安全隐患等挑战&#xff0c;如影随形。 近日&#xff0c;宝马集团宣布…

125页6万字智慧城市系统及智慧城市运营中心建设技术方案

目 录 1. 智慧城市系统概述 1.1 前言 1.2 什么是智慧城市&#xff1f; 1.3 智慧城市的总体目标 1.4 智慧城市如何建设 1.5 智慧城市组成和架构 1.6 智慧城市总体功能 1.6.1 城市运营中心门户 1.6.2 城市事件管理服务 1.6.3 城市运维管理服务 1.6.4 数据挖掘 1.6.4…

【Unity大气散射】GAMES104:3A中如何实现大气散射

写在前面 前两天学习并整理的大气散射基础知识&#xff1a;【Unity大气渲染】关于单次大气散射的理论知识&#xff0c;收获了很多&#xff0c;但不得不承认的是&#xff0c;这其实已经是最早的、90年代的非常古老的方法了&#xff0c;后来也出现了一些优化性的计算思路和方法。…

解决金仓数据库KingbaseES V8R3 由于修改系统时间导致sys_rman备份故障的问题

案例说明&#xff1a; 此案例&#xff0c;为复现“current time may be rewound”错误。对于数据库环境&#xff0c;在使用前必须保证系统时间的正确性。如果数据库创建后&#xff0c;再将系统时间修改为创建数据库之前的时间&#xff0c;在运行过程中将有可能导致新老事务判断…

Beego框架项目搭建步骤

1、执行 go env 指令&#xff0c;将输出当前 Go 开发包的环境变量状态。 GOARCH 表示目标处理器架构。 GOBIN 表示编译器和链接器的安装位置。 GOOS 表示目标操作系统。 GOPATH 表示当前工作目录。 GOROOT 表示 Go 开发包的安装目录。 2、安装beego 输入 go get github.com/as…

IB近三年的改革及未来发展趋势

【转自京领新国际】 据不完全统计&#xff0c;截至目前&#xff0c;IB课程已在全球160余个国家的5667所学校开设&#xff0c;其中&#xff0c;中国大陆有267所学校获得了IB认证。由于IB的教育理念非常适应创新性人才的培养需要&#xff0c;它也越来越被学校、家长和学生认可。那…

论文阅读 - On the efficacy of old features for the detection of new bots - CCF B

目录 摘要&#xff1a; 1.导言 2.文献综述 3 数据集 4.特征集 4.1 CAP_UNI Botometer分数 4.2.与帐户配置文件/时间线相关的功能 4.3.非官方Twitter账户发送的推文比例 4.4.实验装置 5. 实验结果 5.1. Celebrity-Botwiki 5.2. Verified-Botwiki 5.3. Verified-Vendo…

什么是APERAK?

APERAK(Application error and acknowledgement message)是由消息接收方发出的应用程序错误和确认信息。其目的是&#xff1a; a) 通知消息发送方他的消息已经被消息接收方收到&#xff0c;由于业务系统在处理过程中遇到错误&#xff0c;已被拒绝。 b) 向消息发送方确认消息已…

使用tushare数据画疫情感染人数地图

总是看到网上有各种各样的可以用地图来展示某一地区的情况&#xff0c;如GDP的增速、人口的变化等&#xff0c;于是就想想这个问题是否能用python来实现&#xff0c;经查阅资料发现&#xff0c;用python来画地图其实也并不难&#xff0c;做好数据和地图的关联就可以实现。 一、…

移动WEB开发之响应式布局--响应式开发

响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置&#xff0c;从而适配不同设备的目的。 响应式布局容器 响应式需要一个父级做为布局容器&#xff0c;来配合子级元素来实现变化效果。 原理就是在不同屏幕下&#xff0c;通过媒体查询来改变这个布局…

洞察市场需求,深耕大健康赛道,缤跃酒店打造一站式运动酒店品牌

近期&#xff0c;人民数据研究院发布《2022全民跑步运动健康报告》&#xff0c;报告中显示参与跑步人群的年龄跨度随着社会对跑步运动不断攀升的热情而增加。现代生活节奏加快、竞争压力大使得部分中青年通过运动寻求解压&#xff0c;2022年18-40岁的跑者开始成为中坚力量&…