K-MEANS算法分析和总结.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据挖掘中的 K-MEANS 算法,一个聚类算法。 #include stdio.h #include stdlib.h #include math.h #define NA 4 /* 数据维数 */ #define K 3 /* 聚类数 */ #define Psize 50 /* 种群大小 */ #define T 30 /* 最大迭代数 */ #define ED 0.0000001 /* 结束条件 */ typedef struct { double double p[NA]; distance[K]; }Point; typedef struct { Point clu_cent[K]; int cluster[K][Psize]; /* /* 即 cluster_center 簇类中心 */ 簇类数组 */ int cluster_num[K]; /* 簇类中一组数据的编号 */ double fitness; /* 样本适应度值,用于判断结束条件 */ double old_fitness; /* 前一次迭代的适应度值 */ }Pop; double Je; /* 所有样本的平方误差和 */ /* 声明函数 */ int Is_equal(int a[], int n, int b); double Euclid(int x, int y); void input_data(); void Init_center(); void calculate_distance(); void Make_new_cluster(); void Make_new_center(); void output_info(int flag); Point all_data[Psize]; /* 数据大小 */ Pop pop; /************************************************ 从外部文件导入数据,对于没有数据文件将报错, * 数据文件的格式根据 NA 决定,例如 NA = 4 时,测 * 试数据为四维,则 test.data 为: * * 1 2 3 4 * * * 1.0 1.2 ...... 1.3 1.4 * * * ...... * ***********************************************/ void input_data() { FILE *infile; int i, j; double data; if((infile = fopen(test.data, r)) == NULL){ printf(没有 test.data 这个文件,无法导入数据\n); exit(1); } for(i = 0; i Psize; i++) for(j = 0; j NA; j++){ fscanf(infile, %lf, data); all_data[i].p[j] = data; // printf(%d --%d %lf\n, i, j, all_data[i].p[j]); } fclose(infile); /* 关闭文件描述符 */ } /*************************************************** 随机初始化聚类质心,当随机数有相同时跳过继续执行* **************************************************/ void Init_center() { int i, j; int num = 0; int rand_num; int rand_num_tmp[K]; /* 随机产生三个 0~Psize 的数 */ while(num K){ rand_num = rand() % Psize; if(!Is_equal(rand_num_tmp, num, rand_num)) rand_num_tmp[num++] = rand_num; } for(i = 0; i K; i++){ // printf(初始化质心%d:\n, i + 1); for(j = 0; j NA; j++){ pop.clu_cent[i].p[j] = all_data[rand_num_tmp[i]].p[j]; // printf(%lf ,pop.clu_cent[i].p[j]); } printf(\n); } } /********************************** 检查数据是否有相等,相等返回 1 * *********************************/ int Is_equal(int a[], int n

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档