网络与信息安全实验三异常检测.docx

上传人:b****5 文档编号:6790474 上传时间:2023-01-10 格式:DOCX 页数:11 大小:141.43KB
下载 相关 举报
网络与信息安全实验三异常检测.docx_第1页
第1页 / 共11页
网络与信息安全实验三异常检测.docx_第2页
第2页 / 共11页
网络与信息安全实验三异常检测.docx_第3页
第3页 / 共11页
网络与信息安全实验三异常检测.docx_第4页
第4页 / 共11页
网络与信息安全实验三异常检测.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

网络与信息安全实验三异常检测.docx

《网络与信息安全实验三异常检测.docx》由会员分享,可在线阅读,更多相关《网络与信息安全实验三异常检测.docx(11页珍藏版)》请在冰豆网上搜索。

网络与信息安全实验三异常检测.docx

网络与信息安全实验三异常检测

 

 

网络与信息安全实验报告

 

(2015年度秋季学期)

 

一、实验内容

实验描述:

1、理解基于异常检测的恶意代码防治方法

(1)掌握异常检测的流程

(2)学习相关的异常检测算法

2、基于聚类的异常检测方法

(1)掌握欧氏距离和聚类的概念

(2)如何选取数据集的属性集

(3)采用k-means算法和k-medoids算法聚类数据并进行检测

3、基于聚类的网络流量异常检测

(1)建立历史数据集合

(2)规格化数据

(3)分别采用k-means算法和k-medoids算法对历史数据集进行聚类,产生分类结果

实验过程要求:

1、输入多个一维数据作为历史数据集合,给定类别,进行聚类。

2、输出聚类结果,包括每个类别包含的数据、类别的质心。

3、以上过程分别用k-means算法和k-medoids算法完成。

二、实验设计

算法:

首先,选择K个初始质心,其中K是用户指定的参数,即所期望的簇的个数。

每个点指派到最近的质心,而指派到一个质心的点集为一个簇。

然后,根据指派到簇的点,更新每个簇的质心。

重复指派和更新步骤,直到簇不发生变化,或等价地,直到质心不发生变化。

期望结果:

数据集被划分成不同的簇

二、实验设计

程序流程图:

数据结构:

主要为点的数据结构,用于存放点集的横纵坐标

关键函数:

主要代码1,

说明:

average_point()函数用于求k-means簇的新的质心,即求所有点的平均值,作为新的质心。

主要代码2:

说明:

min_point()函数用于求k-medoids簇的新的质心,即求某个点,此点到其他点的所有距离之和最小,以此点作为新的质心。

主要代码3:

说明:

上图程序用于初始化质心,visit数组为了保证随机选取的质心不会重复

主要代码:

4:

说明遍历数据集,将点加入到离他最近的质心

主要代码5,

说明:

如果质心不再变化,则输出所有的簇,否则,更新原质心为新的质心,重新迭代

三、测试数据

此数据集为随机产生,现取其中一组一随机结果数据,用于分析和验证算法的正确性。

k-means数据集样例:

k-medoids数据集样例

四、实验结果

k-means:

随机产生十个点,初始中心点K为3,测试结果如下

根据运行结果可以知道,三个簇的质心(中心点)分别为(73,49),(8,54),(55,88)。

三个簇中所包含的具体点如上图所示,可知初始点集已被正确划分为三个簇

k-medoids

根据运行结果可以知道,三个簇的质心(中心点)分别为(44,39),(61,79),(66,25)。

三个簇中所包含的具体点如上图所示,可知初始点集已被正确划分为三个簇

五、遇到的困难及解决方法、心得体会

通过实现k-means算法和k-medoids算法,实现了对数据的聚类和检测,掌握了异常检测的流程和欧氏距离与聚类的概念,对于网络异常检测的方法有了更深的认识。

 

附件:

源代码

#include

#include

#include

#include

#include

#include

#include

usingnamespacestd;

structpoint{

intx;

inty;

};

intgetDistance(pointa,pointb)

{

return(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);

}

pointaverage_point(vectorv)

{

intlen=v.size();

//cout<<"大小为:

"<

inttotal_x=0,total_y=0;

pointaver;

for(inti=0;i

{

total_x+=v[i].x;

total_y+=v[i].y;

}

aver.x=total_x/len;

aver.y=total_y/len;

returnaver;

}

pointmin_point(vectorv){

intlen=v.size();

intmindis=100000000;

intchoice=0;

inttemp_sum;

for(inti=0;i

{

temp_sum=0;

for(intj=0;j

if(j==i)

continue;

else

temp_sum+=getDistance(v[i],v[j]);

}

if(temp_sum<=mindis){

mindis=temp_sum;

choice=i;

}

}

returnv[choice];

 

}

 

boolis_equal(pointa,pointb){

if(a.x==b.x&&a.y==b.y)

returntrue;

else

returnfalse;

}

voidk_means(vectorv,intk)

{

vector>center;

vector>new_center;

vectorline;

intvisit[10000];

for(inti=0;i<10000;i++)

{

center.push_back(line);//二维vector需要初始化,才能v[i].push_back(t);

new_center.push_back(line);

visit[i]=0;

}

inti=0;

intflag;

intlength=v.size();

cout<<"所有点的"<

for(inti=0;i

cout<<"["<

}

//初始化K个簇

//随机选择k个点,为K个簇

while(i

{

vectort;

intc;

c=rand()%length;

if(visit[c]==1)

continue;

center[i].push_back(v[c]);

visit[c]=1;

i++;

}

intit=1;

while(true){

cout<<"第"<

flag=0;

new_center.clear();

vectorline;

cout<<"中心点:

"<

for(inti=0;i

cout<

["<

}

for(inti=0;i<10000;i++)

{

new_center.push_back(line);

}

intdis;

for(inti=0;i

intmin_dist=10000000;

intchoice;

vectort;

for(intj=0;j

dis=getDistance(v[i],center[j][0]);

if(dis

min_dist=dis;

choice=j;

}

}

if(dis==0)

continue;

cout<<"点:

["<

"<

center[choice].push_back(v[i]);//将此点集加入到离他最近的质心

}

for(inti=0;i

//new_center[i].push_back(average_point(center[i]));//求平均质心

new_center[i].push_back(min_point(center[i]));//求平均质心

//cout<<"new_center:

["<

}

for(inti=0;i

if(is_equal(new_center[i][0],center[i][0])){//判断新的质心与原质心是否相等

flag+=1;

}

}

if(flag==k){//如果新质心与原质心都相同,即质心不再变化

for(inti=0;i

cout<<"第"<

"<<"中心点为:

"<<"["<

for(intj=1;j

cout<<"["<

}

}

return;

}

else{//否则,更新原质心为新的质心,重新迭代

center.clear();

center.assign(new_center.begin(),new_center.end());

}

}

 

}

intmain(){

vectorv;

srand(time(NULL));

intnum,k;

cout<<"请输入点的个数:

";

cin>>num;

cout<<"请输入中心点k的个数:

";

cin>>k;

pointp;

for(inti=0;i

p.x=rand()%100;//随机产生0-99之间的数字

p.y=rand()%100;

v.push_back(p);

}

k_means(v,k);

 

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1