ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:61.61KB ,
资源ID:1248093      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1248093.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(最新C均值聚类实验报告共10页.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

最新C均值聚类实验报告共10页.docx

1、最新C均值聚类实验报告共10页C均值(jn zh)聚类实验报告C均值(jn zh)聚类实验报告一、C均值聚类的算法(sun f)原理聚类分析是指事先不知样本的类别,而利用样本的先验(xin yn)知识来构造分类器(无监督学习)聚类准则(zhnz)函数在样本相似性度量的基础上,聚类分析还需要一定的准则函数,才能把真正属于同一类的样本聚合成一个类的子集,而把不同类的样本分离开来。如果聚类准则函数选得好,聚类质量就会高。同时,聚类准则函数还可以用来评价(pngji)一种聚类结果的质量,如果聚类质量不满足要求,就要重复执行聚类过程,以优化结果。在重复优化中,可以改变相似性度量,也可以选用新的聚类准则。

2、误差平方和准则(最常用的) 假定有混合样本集 ,采用某种相似性度量 被聚合成c个分离开的子集 ,每个子集是一个类, 它们分别包含 个 样本 。 为了衡量聚类的质量,采用误差平方和聚类准则函数 式中 为类中样本的均值: 是c个子集合的中心,可以用来代表c个类。误差平方和 聚类准则函数是样本与集合中心的函数。在样本集X给定的情况下, 其取值取决于c个集合“中心”。 它描述n个试验样本聚合成c个类时,所产生的总误差平方和 越小越好。误差平方和准则适用于各类样本比较密集且样本数目悬殊不大的样本分布。C-均值聚类算法的核心思想是通过迭代把数据对象划分到不同的簇中,以求目标数最小化,从而使生成的簇尽可能地

3、紧凑和独立。首先(shuxin),随机选取k个对象作为(zuwi)初始的k个簇的质心(zh xn);然后,将其余对象根据其与各个簇质心的距离分配(fnpi)到最近的簇;再求新形成的簇的质心。这个迭代重定位过程不断重复,直到(zhdo)目标函数最小化为止。 C均值聚类算法使用的聚类准则函数是误差平方和准则 :为了使聚类结果优化,应该使准则 最小化。二、C均值聚类的实现步骤C均值算法步骤: 给出n个混合样本,令 ,表示迭代运算次数,选取c个初始聚合中心 计算每个样本与聚合中心的距离:若则令 计算新的集合中心:计算误差平方和 值: 对每个聚合中的每个样本,计算:表示 减少的部分 。表示 增加的部分:

4、若 ,则把样本 移到聚合中心 中,并修改聚合中心和 值。 判断(pndun):若 则 ,返回(fnhu)。否则(fuz),算法结束。 三. 编写(binxi)的程序:#include #include #include #include #include #include using namespace std;double distance(double a4, double b4) / TODO: 改马氏距离(jl) double d0 = a0-b0; double d1 = a1-b1; double d2 = a2-b2; double d3 = a3-b3; return sqrt

5、(d0*d0+d1*d1+d2*d2+d3*d3);int main() / 读取数据 double data1504; ifstream f(data.txt); for(int i=0; idatai0datai1datai2datai3; f.close(); / 归一化 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=data

6、ij; for(i=0; i150; i+) for(int j=0; j4; j+) dataij = (dataij-mj) / (Mj-mj); / 打乱 / TODO: 使用(shyng)随机排序int rightLabels150;for(i=0; i50; i+)rightLabelsi = 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; tm

7、p = datai0; datai0 = dataj0; dataj0 = tmp; tmp = datai1; datai1 = dataj1; dataj1 = tmp; tmp = datai2; datai2 = dataj2; dataj2 = tmp; tmp = datai3; datai3 = dataj3; dataj3 = tmp;int tmp2;tmp2 = rightLabelsi;rightLabelsi = rightLabelsj;rightLabelsj = tmp2; / 分类(fn li) int labels150; double Z34 = data0

8、0, data01, data02, data03, data10, data11, data12, data13, data20, data21, data22, data23; int iterations = 0; while(true) / coutsetw(10)Z00setw(10)Z01setw(10)Z02setw(10)Z03endl/ setw(10)Z10setw(10)Z11setw(10)Z12setw(10)Z13endl/ setw(10)Z20setw(10)Z21setw(10)Z22setw(10)Z23endl/ endl;/ cin.get(); ite

9、rations+; / 最小距离(jl)分类 到label for(int i=0; i150; i+) double d0 = distance(Z0, datai); double d1 = distance(Z1, datai); double d2 = distance(Z2, datai); if(d0d1)&(d0d2) labelsi = 0; else if(d1d2) labelsi = 1; else labelsi = 2; / 计算均值(jn zh)为新聚类中心 到Z double sum34 = 0.0; int count3 = 0; for(i=0; i150;

10、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)/ 可以加入(jir)e比较 Zij = sumij / counti; changed = true; / 聚类中心(zhngxn)没改变则退出 if(!changed) break; / 输出(sh

11、ch) int count3 = 0; for(i=0; i150; i+) coutdatai0tdatai1tdatai2tdatai3tlabelsit(char)(rightLabelsi+A)endl; countlabelsi+; coutendl iterations: iterationsendl label0 count: count0endl label1 count: count1endl label2 count: count2endl; cin.get(); return 0;四.运行(ynxng)结果:0.1666670.1666670.3898310.3750B0

12、.1388890.4166670.06779701A0.4722220.0833330.6779660.5833330C0.5833330.3333330.7796610.8752C0.250.8750.08474601A0.19444400.4237290.3750B0.1944440.5833330.0847460.0416671A0.50.3750.6271190.5416670B0.4166670.2916670.5254240.3750B0.750.50.6271190.5416672B0.1388890.4583330.1016950.0416671A0.250.2916670.4915250.5416670B0.333

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

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