湖南科技大学软件生产实习报告.docx
- 文档编号:15325257
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:17
- 大小:214.16KB
湖南科技大学软件生产实习报告.docx
《湖南科技大学软件生产实习报告.docx》由会员分享,可在线阅读,更多相关《湖南科技大学软件生产实习报告.docx(17页珍藏版)》请在冰点文库上搜索。
湖南科技大学软件生产实习报告
软件生产实习报告书
聚类算法设计与实现
学号:
1005010214
姓名:
朱志刚
指导老师:
朱自兰
完成日期:
2013年6月28日
目录
一、前言3
二、可行性研究3
三、需求分析3
3.1总体设计思想:
3
3.2算法步骤4
四、系统设计与实现5
4.1系统架构5
4.2载入数据模块5
4.3随机选取K个点初始化聚类中心9
4.4计算类间距离并且把坐标点分好类9
4.5重新计算各个类的聚类中心10
4.6分析误差,结束程序11
五、综合测试12
六、总结13
七、参考文献13
一、前言
聚类分析是数据数据挖掘领域中重要的研究课程,用于发现大规模数据集中未知的对象类。
它广泛地应用于文本搜索、模式识别、人工智能、图像分析等领域。
目前已经处在许多的聚类算法,比如基于划分的K-Means算法。
K-Means算法是一种以平均值作为聚类中心的分割聚类方法,简单而且快捷。
二、可行性研究
1)工艺技术上:
对于给定的一个包含n个二维数据集以及要生成的数据子集的数目K,K-Means聚类算法将数据对象组织为K个划分。
每个划分代表一个类,每个类有一个类别中心。
选取欧式距离作为相似和距离判断准则,计算该类内各点到聚类中心的距离平方和,聚类目标是使各类总的距离平方和最小。
显然我们可以换一种思想分类的时候,分别计算所有数据集到K各点的距离最短而分类,用中心点的距离误差代替极限的无限逼近。
2)市场需求上:
聚类分析是数据挖掘中的一个重要研究领域,K-Menas算法在对于学生学习成绩的分析、电信CRM客户分类有重要的作用。
3)经济效益上:
这个算法在成本上非常少,只需要脑力成本,不需要过度的开销。
三、需求分析
3.1总体设计思想:
k-means算法接受输入量k;然后将n个数据对象划分为k个聚类以便使得所获得的聚类满足:
同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。
聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。
下面是具体的需求算法:
下面为具体的总体流程图:
3.2算法步骤
K-Means算法的步骤:
(1)选K个初始聚类中心,z1
(1),z2
(1),…,zK
(1),其中括号内的序号为寻找聚类中心的迭代运算的次序号。
聚类中心的向量值可任意设定,例如可选开始的K个模式样本的向量值作为初始聚类中心。
(2)逐个将需分类的模式样本{x}按最小距离准则分配给K个聚类中心中的某一个zj
(1)。
假设i=j时,其中k为迭代运算的次序号,第一次迭代k=1,Sj表示第j个聚类,其聚类中心为zj。
(3)计算各个聚类中心的新的向量值,zj(k+1),j=1,2,…,K。
求各聚类域中所包含样本的均值向量;其中Nj为第j个聚类域Sj中所包含的样本个数。
以均值向量作为新的聚类中心,可使如下聚类准则函数最小:
在这一步中要分别计算K个聚类中的样本均值向量,所以称之为K-均值算法。
(4)若j=1,2,…,K,则返回第二步,将模式样本逐个重新分类,重复迭代运算;
若,j=1,2,…,K,则算法收敛,计算结束。
四、系统设计与实现
4.1系统架构
本系统主要由4个系统模块组成图4.1为系统模块图,下面将详细介绍各个模块的设计。
图4.1
4.2载入数据模块
结构图如下:
否
首先需要定义一个读取数据的结构体,考虑到数据的一些处理与类别问题,把结构体设置成下面的这种形式:
structPOI//数据处理数据结构体
{
stringname;//名字
doublelongitude;//经度
doublelatitude;//纬度
intinfo;//标志位,是哪个聚类
};
数据文件数据文件数据都是这种形式:
功学社音乐中心,116.46918,39.90627,
711便利店建国路现代城北侧店,116.46888,39.90627,
北京同仁堂现代城药店,116.46884,39.90593,
所以读入的时候,先整个一行读入,然后把浮点数数据提取出来从字符型的数据转化成浮点类型,在这个部分写一个转化函数,因为需要用到C++面向对象的方法,固将其封装成类:
doubleK_Means:
:
todouble(strings)//把字符串转化成double型
{
doubleres=0.0;
intflag=0,xs=0,ws=0;
intjc=1;
for(inti=0;i { if(s[i]=='.') { flag=1; continue; } if(flag==0) { res*=10; res+=s[i]-'0'; } else { ws++; xs*=10; xs+=s[i]-'0'; } } for(intj=0;j { jc*=10; } res+=xs*1.0/jc; returnres; } K_Means: : K_Means() { num=0; K=0;//分类数初始化为0 } boolK_Means: : Load()//加载样本 { intK_var; char*filename=newchar[100]; stringh1,h2; cout<<"请输入文件的名字: "; cin>>filename; ifstreamfile_in; file_in.open(filename); if(file_in.is_open()==false) cout<<"读取文件失败"< else cout<<"读取文件成功"< while(file_in) { if(getline(file_in,str)==NULL)break; getstrs(str,poi[num].name,h1,h2); poi[num].info=-1;//设置标志位为-1. poi[num].longitude=todouble(h1); poi[num].latitude=todouble(h2); num++; } file_in.close(); cout<<"请输入K值(K不大于"< "; cin>>K_var; K=K_var; if(K>num) { cout<<"! ! ! invaliddata"< delete[]filename; returnfalse; } else { delete[]filename; returntrue; } returntrue; } voidK_Means: : getstrs(strings,string&a,string&b,string&c)//获取子串 { intinf=0,k=0,m=0;//inf逗号标识,k区别字符串 stringabc[3];//临时字符串 for(inti=0;i if(str[i]==',') { abc[k]=s.substr(0+inf,i-inf);//从索引。 。 开始。 。 个字符 s[i]='\0'; inf=i+1; k++; } a=abc[0]; b=abc[1]; c=abc[2];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖南 科技大学 软件 生产 实习 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)