- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
- init进程1分析和总结.docx
- instead of触发器分析和总结.docx
- Insurance_New products, new eyes分析和总结最新分析和总结.docx
- interrupt分析和总结最新分析和总结.docx
- Intouch组态软件opclink驱动配置及测试方法.docx
- introductory speech分析和总结最新分析和总结.docx
- iOS开发捕捉手势.docx
- iOS开发程序员最常用的宏定义.docx
- ios开发基础课程-扣丁学堂.docx
- ios开发入门到精通四大阶段.docx
- KPD低压轨道平车供电方式.docx
- KTR-202UC型三相电量表说明书V1.3.docx
- KTV包房系统分析和总结.docx
- KTV服务员工作流程.docx
- L4 Project Integration Management分析和总结最新分析和总结.docx
- L5 Project Scope Management分析和总结最新分析和总结.docx
- L8 Project Quality Management分析和总结最新分析和总结.docx
- L9 Project HR Management分析和总结最新分析和总结.docx
- L10 Project Communications Management分析和总结最新分析和总结.docx
- L11 Project Risk Management分析和总结最新分析和总结.docx
文档评论(0)