數(shù)據(jù)挖掘?qū)嶒?yàn)報(bào)告-聚類分析_第1頁(yè)
數(shù)據(jù)挖掘?qū)嶒?yàn)報(bào)告-聚類分析_第2頁(yè)
數(shù)據(jù)挖掘?qū)嶒?yàn)報(bào)告-聚類分析_第3頁(yè)
數(shù)據(jù)挖掘?qū)嶒?yàn)報(bào)告-聚類分析_第4頁(yè)
數(shù)據(jù)挖掘?qū)嶒?yàn)報(bào)告-聚類分析_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)挖掘?qū)嶒?yàn)報(bào)告(三)聚類分析姓名:李圣杰班級(jí):計(jì)算機(jī)1304學(xué)號(hào): 一、實(shí)驗(yàn)?zāi)康?、 掌握k-means聚類方法;2、 通過(guò)自行編程,對(duì)三維空間內(nèi)的點(diǎn)用k-means方法聚類。二、實(shí)驗(yàn)設(shè)備 PC一臺(tái),dev-c+5.11三、實(shí)驗(yàn)內(nèi)容 1.問(wèn)題描述:立體空間三維點(diǎn)的聚類.說(shuō)明:數(shù)據(jù)放在數(shù)據(jù)文件中(不得放在程序中),第一行是數(shù)據(jù)的個(gè)數(shù),以后各行是各個(gè)點(diǎn)的x,y,z坐標(biāo)。2.設(shè)計(jì)要求讀取文本文件數(shù)據(jù),并用K-means方法輸出聚類中心3. 需求分析k-means 算法接受輸入量k;然后將n個(gè)數(shù)據(jù)對(duì)象劃分為 k個(gè)聚類以便使得所獲得的聚類滿足:同一聚類中的對(duì)象相似度較高;而不同聚類中的對(duì)象相似度較小。

2、聚類相似度是利用各聚類中對(duì)象的均值所獲得一個(gè)“中心對(duì)象”(引力中心)來(lái)進(jìn)行計(jì)算的。k-means算法的工作過(guò)程說(shuō)明如下:首先從n個(gè)數(shù)據(jù)對(duì)象任意選擇k個(gè)對(duì)象作為初始聚類中心,而對(duì)于所剩下的其它對(duì)象,則根據(jù)它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類。然后,再計(jì)算每個(gè)所獲新聚類的聚類中心(該聚類中所有對(duì)象的均值),不斷重復(fù)這一過(guò)程直到標(biāo)準(zhǔn)測(cè)度函數(shù)開始收斂為止。一般都采用均方差作為標(biāo)準(zhǔn)測(cè)度函數(shù),具體定義如下: (1)其中E為數(shù)據(jù)庫(kù)中所有對(duì)象的均方差之和,p為代表對(duì)象的空間中的一個(gè)點(diǎn),mi為聚類Ci的均值(p和mi均是多維的)。公式(1)所示的聚類標(biāo)準(zhǔn),旨在

3、使所獲得的k個(gè)聚類具有以下特點(diǎn):各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。四、實(shí)驗(yàn)步驟Step 1.讀取數(shù)據(jù)組,從N個(gè)數(shù)據(jù)對(duì)象任意選擇k個(gè)對(duì)象作為初始聚類中心;Step 2.循環(huán)Step 3到Step 4直到每個(gè)聚類不再發(fā)生變化為止;Step 3.根據(jù)每個(gè)聚類對(duì)象的均值(中心對(duì)象),計(jì)算每個(gè)對(duì)象與這些中心對(duì)象的距離,并根據(jù)最小距離重新對(duì)相應(yīng)對(duì)象進(jìn)行劃分;Step 4.重新計(jì)算每個(gè)(有變化)聚類的均值(中心對(duì)象)。代碼#include #include #include #include int K,Vectordim,datasize,seed=1;float *data,*kmatr

4、ix;float *max_column,*min_column;/*創(chuàng)建維數(shù)可指定的二維動(dòng)態(tài)數(shù)組arraymn*/float* array(int m, int n) float *p; int i; p=(float*)malloc(m*sizeof(float*); p0=(float*)malloc(m*n*sizeof(float); for(i=1; im; +i) pi=pi-1+n; return p;/*釋放二維數(shù)組所占用的內(nèi)存*/void freearray(float* p) free(*p); free(p);void loaddata() FILE * fp; int

5、 i,j; if(fp=fopen(data.txt,r)=NULL) printf(Cannot open file!n);exit(0); if(feof(fp) printf(data.txt is a empty file!n); fclose(fp);exit(0); if(fscanf(fp,K=%d,Vectordim=%d,datasize=%dn,&K,&Vectordim,&datasize)!=3) printf(load error!n); fclose(fp);exit(0); data=array(datasize,Vectordim+1); for(i=0;ida

6、tasize;i+) dataiVectordim=0; for(j=0;jVectordim;j+) if(j=(Vectordim-1) fscanf(fp,%fn,&dataij); else fscanf(fp,%f ,&dataij); /*printf(%f ,dataij);*/ double euclid_distance(float a,float b,int dim)int i;double sum=0;for(i=0;idim;i+)sum+=pow(ai-bi,2);return sqrt(sum);void getmaxmin(float *a)int i,j;max

7、_column=(float *)malloc(sizeof(float)*Vectordim);min_column=(float *)malloc(sizeof(float)*Vectordim);for(i=0;iVectordim;i+)max_columni=a0i;min_columni=a0i;for(i=0;iVectordim;i+) for(j=1;jmax_columni)max_columni=aji; if(ajimin_columni)min_columni=aji; /*printf(max_column%d=%f, min_column%d=%fn,i,max_

8、columni,i,min_columni);*/ void initializerandom()seed+;srand(unsigned) time(NULL)+seed);float randomreal(float Low, float High) return (float) rand() / RAND_MAX) * (High-Low) + Low; void K_locations_random()int i,j;kmatrix=array(K,Vectordim+1);printf(Randomly the K-locations are initialized as follo

9、ws:n);for(i=0;iK;i+) initializerandom(); kmatrixiVectordim=(float)(i+1); printf(location-%d: ,i+1); for(j=0;jVectordim;j+) kmatrixij=randomreal(min_columni,max_columni);printf(%f, ,kmatrixij); printf(n);int existemptyclass()int *empty,i,j,ef;empty=(int *)malloc(sizeof(int)*K);for(i=0;iK;i+) emptyi=0

10、;for(i=0;idatasize;i+)for(j=1;j=K;j+)if(j=(int)dataiVectordim) emptyj-1+;for(i=0,ef=0;iK;i+) if(0=emptyi) ef=1;return ef;int cluster()int i,j,flag,eflag=1;double closest,d;for(i=0;idatasize;i+)closest=euclid_distance(datai,kmatrix0,Vectordim);flag=1; for(j=1;jK;j+) d=euclid_distance(datai,kmatrixj,V

11、ectordim); if(dclosest) closest=d;flag=j+1; if(dataiVectordim!=(float)flag) eflag=0;dataiVectordim=(float)flag;return eflag;void update_k_location()int i,j,number,m;float *temp;temp=(float *)malloc(sizeof(float)*(Vectordim);for(m=0;mVectordim;m+) tempm=0;for(number=0,i=1;i=K;i+) for(m=0;mVectordim;m

12、+) tempm=0;for(j=0;jdatasize;j+)if(datajVectordim=i) number+;for(m=0;mVectordim;m+)tempm+=datajm; for(m=0;mVectordim;m+)kmatrixi-1m=tempm/number;/*printf(%fn,kmatrixi-1m);*/free(temp);void output()int i,j,m;/*for(m=0;mdatasize;m+)*/*printf(data%dVectordim=%fn,m,datamVectordim);*/ for(i=1;i=K;i+) pri

13、ntf(The following data are clusterd as CLASS %d:n,i); for(j=0;jdatasize;j+) if(datajVectordim=(float)i) for(m=0;m1000)break; time+; update_k_location(); end_flag=cluster();empty_flag=existemptyclass();if(empty_flag) printf(There is a empty class!nSo restart!n);continue;else break;printf(nAfter %ld times calculationn,time);output();freememory();實(shí)驗(yàn)數(shù)據(jù)文件:data.txt用空格分開K=3,Vectordim=3,datasize=15-25 22.2 -35.34 31.2 -14.4 2332.02 -23 24.44 -25.35 36.3 -

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論