C均值聚类实验报告(共9页)

上传人:494895****12427 文档编号:53769070 上传时间:2022-02-11 格式:DOC 页数:10 大小:317.50KB
收藏 版权申诉 举报 下载
C均值聚类实验报告(共9页)_第1页
第1页 / 共10页
C均值聚类实验报告(共9页)_第2页
第2页 / 共10页
C均值聚类实验报告(共9页)_第3页
第3页 / 共10页
资源描述:

《C均值聚类实验报告(共9页)》由会员分享,可在线阅读,更多相关《C均值聚类实验报告(共9页)(10页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上C均值聚类实验报告一、C均值聚类的算法原理聚类分析是指事先不知样本的类别,而利用样本的先验知识来构造分类器(无监督学习)聚类准则函数在样本相似性度量的基础上,聚类分析还需要一定的准则函数,才能把真正属于同一类的样本聚合成一个类的子集,而把不同类的样本分离开来。如果聚类准则函数选得好,聚类质量就会高。同时,聚类准则函数还可以用来评价一种聚类结果的质量,如果聚类质量不满足要求,就要重复执行聚类过程,以优化结果。在重复优化中,可以改变相似性度量,也可以选用新的聚类准则。误差平方和准则(最常用的) 假定有混合样本集 ,采用某种相似性度量 被聚合成c个分离开的子集 ,每个子集是

2、一个类, 它们分别包含 个 样本 。 为了衡量聚类的质量,采用误差平方和聚类准则函数 式中 为类中样本的均值: 是c个子集合的中心,可以用来代表c个类。误差平方和 聚类准则函数是样本与集合中心的函数。在样本集X给定的情况下, 其取值取决于c个集合“中心”。 它描述n个试验样本聚合成c个类时,所产生的总误差平方和 越小越好。误差平方和准则适用于各类样本比较密集且样本数目悬殊不大的样本分布。C-均值聚类算法的核心思想是通过迭代把数据对象划分到不同的簇中,以求目标数最小化,从而使生成的簇尽可能地紧凑和独立。首先,随机选取k个对象作为初始的k个簇的质心;然后,将其余对象根据其与各个簇质心的距离分配到最

3、近的簇;再求新形成的簇的质心。这个迭代重定位过程不断重复,直到目标函数最小化为止。 C均值聚类算法使用的聚类准则函数是误差平方和准则 :为了使聚类结果优化,应该使准则 最小化。二、C均值聚类的实现步骤C均值算法步骤: 给出n个混合样本,令 ,表示迭代运算次数,选取c个初始聚合中心 计算每个样本与聚合中心的距离:若则令 计算新的集合中心:计算误差平方和 值: 对每个聚合中的每个样本,计算:表示 减少的部分 。表示 增加的部分:若 ,则把样本 移到聚合中心 中,并修改聚合中心和 值。 判断:若 则 ,返回。否则,算法结束。 三. 编写的程序:#include #include #include #

4、include #include #include using namespace std;double distance(double a4, double b4)/ TODO: 改马氏距离double d0 = a0-b0;double d1 = a1-b1;double d2 = a2-b2;double d3 = a3-b3;return sqrt(d0*d0+d1*d1+d2*d2+d3*d3);int main()/ 读取数据double data1504;ifstream f(data.txt);for(int i=0; idatai0datai1datai2datai3;f.c

5、lose();/ 归一化double m4 = DBL_MAX, DBL_MAX, DBL_MAX, DBL_MAX;double M4 = -DBL_MAX, -DBL_MAX, -DBL_MAX, -DBL_MAX;for(i=0; i150; i+)for(int j=0; j4; j+)if(dataijMj)Mj=dataij;for(i=0; i150; i+)for(int j=0; j4; j+)dataij = (dataij-mj) / (Mj-mj);/ 打乱/ TODO: 使用随机排序int rightLabels150;for(i=0; i50; i+)rightLa

6、belsi = 0;for(i=50; i100; i+)rightLabelsi = 1;for(i=100; i150; i+)rightLabelsi = 2;srand(time(NULL);for(i=0; i150; i+)int j = rand()%150;double tmp;tmp = datai0; datai0 = dataj0; dataj0 = tmp;tmp = datai1; datai1 = dataj1; dataj1 = tmp;tmp = datai2; datai2 = dataj2; dataj2 = tmp;tmp = datai3; datai3

7、 = dataj3; dataj3 = tmp;int tmp2;tmp2 = rightLabelsi;rightLabelsi = rightLabelsj;rightLabelsj = tmp2;/ 分类int labels150;double Z34 = data00, data01, data02, data03, data10, data11, data12, data13, data20, data21, data22, data23;int iterations = 0;while(true)/ coutsetw(10)Z00setw(10)Z01setw(10)Z02setw

8、(10)Z03endl/ setw(10)Z10setw(10)Z11setw(10)Z12setw(10)Z13endl/ setw(10)Z20setw(10)Z21setw(10)Z22setw(10)Z23endl/ endl;/ cin.get();iterations+;/ 最小距离分类 到labelfor(int i=0; i150; i+)double d0 = distance(Z0, datai);double d1 = distance(Z1, datai);double d2 = distance(Z2, datai);if(d0d1)&(d0d2)labelsi =

9、0;else if(d1d2)labelsi = 1;elselabelsi = 2;/ 计算均值为新聚类中心 到Zdouble sum34 = 0.0;int count3 = 0;for(i=0; i150; i+)int label = labelsi;sumlabel0+=datai0;sumlabel1+=datai1;sumlabel2+=datai2;sumlabel3+=datai3;countlabel+;bool changed = false;for(i=0; i3; i+)for(int j=0; j4; j+)if(Zij != sumij / counti)/ 可以

10、加入e比较Zij = sumij / counti;changed = true;/ 聚类中心没改变则退出if(!changed)break;/ 输出int count3 = 0;for(i=0; i150; i+)coutdatai0tdatai1tdatai2tdatai3tlabelsit(char)(rightLabelsi+A)endl;countlabelsi+;coutendliterations: iterationsendllabel0 count: count0endllabel1 count: count1endllabel2 count: count2endl;cin.

11、get();return 0;四.运行结果:0.0.0.0.3750B0.0.0.01A0.0.0.0.0C0.0.0.0.8752C0.250.8750.01A0.00.0.3750B0.0.0.0.1A0.50.3750.0.0B0.0.0.0.3750B0.750.50.0.2B0.0.0.0.1A0.250.0.0.0B0.0.6250.0.1A0.0.0.0.2B0.0.0.0.0B0.0.0.0.1A0.0.0.0.50B0.0.0.7966112C0.0.6250.0.1A0.250.0.0.1A0.0.0.0.0C0.0.0.0.6252C0.0.0.0.750C0.0.375

12、0.0.50B0.0.0.0.50B0.0.0.0.0B0.0.0.0.0B0.0.50.0.2C0.0.50.593220.2B0.0.0.593220.50B0.0.0.0.2C0.0.0.593220.0B0.0.0.0.6252B0.50.0.0.0B0.0.0.01A0.0.0.0.0B0.0.0.0.2C0.0.0.0.1251A0.0.3750.0.50B0.0.50.0.1A0.0.0.0.1A0.0.50.0.1A0.0.0.0.0B0.0.6250.0.1A0.0.50.0.1A0.0.750.0.1251A0.0.0.593220.0B0.0.3750.0.50B0.0.

13、0.0.2C0.0.0.0.2B0.0.0.593220.0C0.0.3750.0.2C0.0.250.0.0B0.0.0.0.2C0.0.0.0.3750B0.0.0.0.2C0.0.0.0.750C0.0.3750.0.2C0.0.0.0.2C0.0.0.0.1A0.0.0.0.0C0.0.2510.2C0.0.0.0.2C0.0.0.0.1A0.0.0.12C0.0.0.0.2C0.0.50.0.2C0.0.0.0.50B0.0.0.0.1A0.0.0.0.2B0.0.6250.0.1A0.0.0.0.2C0.0.50.0.1A0.0.0.0.2C0.0.0.0.50B0.0.250.0

14、.0B0.0.0.01A0.0.0.0.1A0.0.0.0.2C0.0.0.0.1A0.0.0.0.1A0.0.0.0.2C0.0.0.0.752C0.0.50.0.2C0.0.0.0.0B0.0.0.12C0.0.50.796610.2C0.0.0.0.2C0.0.6250.0.1A0.0.0.0.2B0.0.0.0.1A0.0.0.0.1251A0.0.1250.0.50B0.50.0.0.2C0.0.0.593220.0B0.0.0.0.2C0.0.0.0.8752C0.0.0.0.2C0.0.750.0.1A0.0.50.0.2B0.0.1250.0.1A0.0.0.0.1251A0.

15、0.0.0.1A0.0.0.0.752C0.0.0.0.1A00.0.01A0.0.0.593220.6252B0.0.0.0.1A0.0.0.0.1A0.0.750.0.1A0.0.1250.0.50B0.50.0.0.50B0.0.0.0.0B0.0.0.0.2B0.0.750.0.1A10.750.0.2C0.0.750.0.8752C0.0.00.1A0.50.250.0.0C0.0.0.0.1A0.0.3750.0.50B0.0.0.0.2C0.250.6250.0.1A0.0.3750.0.1A0.0.0.0.1A0.0.0.0.0B0.0.0.0.0B0.50.0.0.0B0.0

16、.250.0.3750B0.0.0.0.1A0.0.0.0.2C0.0.0.0.2C0.0.0.0.752C0.0.0.0.2C0.0.0.0.1A0.0.0.0.3750B0.0.0.0.2C0.0.0.0.0C0.0.0.0.6250B0.0.0.0.1251A0.0.0.0.1A0.0.50.0.2C0.10.0.1251A0.0.3750.0.50B0.0.3750.593220.0B0.0.1250.0.3750B0.0.50.0.1A0.0.0.0.1251A0.0.0.0.2C0.0.0.796610.2Citerations: 9label0 count: 48label1 count: 50label2 count: 52说明: 左边前4列是规格化的样本,第5列是识别结果,第6列是正确结果.专心-专注-专业

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!