- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
                        查看更多
                        
                    
                .
.
..
..
数据挖掘实验报告(三) 聚类分析
姓名:李圣杰班级:计算机
1304
学号:1311610602
一、实验目的
1、掌握 k-means 聚类方法;
2、通过自行编程,对三维空间内的点用 k-means 方法聚类。
二、实验设备
PC 一台,dev-c++5.11
三、实验内容
问题描述:
立体空间三维点的聚类.
说明:数据放在数据文件中(不得放在程序中),第一行是数据的个数,以后各行是各个点的 x,y,z 坐标。
设计要求
读取文本文件数据,并用 K-means 方法输出聚类中心
需求分析
k-means 算法接受输入量 k;然后将 n 个数据对象划分为 k 个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。
k-means 算法的工作过程说明如下:首先从 n 个数据对象任意选择 k 个对象作为初始聚类中心,而对于所剩下的其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类。然后,再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值),不断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数,具体定义如下:
E ? ?k
i?1
?
p?Ci
p ? m 2
i
(1)
其中 E 为数据库中所有对象的均方差之和,p 为代表对象的空间中的一个点,
m 为聚类 C
i	i
的均值(p 和 m
i
均是多维的)。公式(1)所示的聚类标准,旨在使所获
得的 k 个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的
分开。
四、实验步骤
Step 1.读取数据组,从N 个数据对象任意选择k 个对象作为初始聚类中心; Step 2.循环Step 3 到 Step 4 直到每个聚类不再发生变化为止;
Step 3.根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离,并根据最小距离重新对相应对象进行划分;
Step 4.重新计算每个(有变化)聚类的均值(中心对象)。代码
#include
stdlib.h
#include time.h
#include
stdio.h
#include
math.h
int K,Vectordim,datasize,seed=1;
float **data,**kmatrix;
float *max_column,*min_column;
/* 创建维数可指定的二维动态数组array[m][n]*/
float** array(int m, int n)
{
float **p; int i;
p=(float**)malloc(m*sizeof(float
*));
if(fscanf(fp,K=%d,Vectordim=%d, datasize=%d\n,K,Vectordim,da tasize)!=3)
{
printf(load error!\n); fclose(fp);
exit(0);
}
data=array(datasize,Vectordim+1)
;
p[0]=(float*)malloc(m*n*sizeof(f loat));
for(i=0;idatasize;i++)
{
data[i][Vectordim]=0;
for(i=1;
p[i]=p[i-1]+n; return p;
im;
++i)
for(j=0;jVectordim;j++)
{
if(j==(Vectordim-1))
}
fscanf(fp,%f\n,data[i][j]);
else	fscanf(fp,%f
/*释放二维数组所占用的内存*/
,data[i][j]);
void freearray(float** p)
/*printf(%f
{
,data[i][j]);*/
free(*p); free(p);
}
}
}
}
void loaddata()
{
FILE * fp; int i,j;
if((fp=fopen(data.txt,r))==N ULL)
{
printf(Cannotopen file!\n); exit(0);
}
if(feof(fp))
{
printf(data.txt is	a	empty file!\n);
fclose(fp); exit(0);
}
double	euclid_distance(float a[],float b[],int dim)
{
int i;
double sum=0; for(i=0;idim;i++)
sum+=pow(a[i]-b[i],2);
                您可能关注的文档
最近下载
- 辽2002SJ802-2 厨房、卫生间垂直集中式排烟气系统.docx VIP
- 新闻摄影培训课件.pptx VIP
- 肾造瘘管相关知识.pptx
- 现场验收检查原始记录填写要求:(GB50300-2013附表及填写范例完整75组数据或描述).pdf VIP
- 2025年70岁以上老人考驾驶证三力测试题.pdf VIP
- 护理学基础各种注射法.pptx VIP
- 西游记中的乘法口诀(教学设计)-2024-2025学年二年级上册数学北师大版.docx VIP
- 护理事业十五五发展规划(2026-2030).docx
- 护理事业十五五(2026-2030)发展规划纲要.docx
- 青海省2025年中考语文真题试卷附同步解析答案.docx VIP
 原创力文档
原创力文档 
                        

文档评论(0)