91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

K-means聚類算法c語言實現。樣本數據從文件讀入,支持任意維數數據和任意k值(k當然要小于樣本數),同時可以防止分出空類。 為做作業原創

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?

int?KVectordimdatasizeseed=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*));
??p[0]=(float*)malloc(m*n*sizeof(float));
??for(i=1;?i??return?p;
}

/*釋放二維數組所占用的內存*/
void?freearray(float**?p)
{
??free(*p);?free(p);
}

void?loaddata()
{
???FILE?*?fp;
???int?ij;
???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=%dVectordim=%ddatasize=%d\n“&K&Vectordim&datasize)!=3)
??? {
??? printf(“load?error!\n“);
????fclose(fp);
exit(0);
}
???data=array(datasizeVectordim+1);
???for(i=0;i??? {
??? ??data[i][Vectordim]=0;
??? ??for(j=0;j ???{
????if(j==(Vectordim-1))?fscanf(fp“%f\n“&data[i][j]);
????else?fscanf(fp“%f?“&data[i][j]);
????/*printf(“%f?“data[i][j]);*/
??? ???}
??? }
}

double?euclid_distance(float?a[]float?b[]int?dim)
{
int?i;
double?sum=0;
for(i=0;i sum+=pow(a[i]-b[i]2);
return?sqrt(sum);
}

void?getmaxmin(float?**a)
{
int?ij;
max_column=(float?*)malloc(sizeof(float)*Vectordim);
min_column=(float?*)malloc(sizeof(float)*Vectordim);

for(i=0;i{
max_column[i]=a[0][i];
min_column[i]=a[0][i];
}

for(i=0;i{
??for(j=1;j??{
??if(a[j][i]>max_column[i])max_column[i]=a[j][i];
??if(a[j][i]??/*printf(“max_column[%d]=%f??min_column[%d]=%f\n“imax_column[i]imin_column[i]);*/
??}
}
}

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?ij;
kmatrix=array(KVectordim+1);
printf(“Randomly?the?K-locations?are?initialized?as?follows:\n“);
for(i=0;i{
??initializerandom();
??kmatrix[i][Vectordim]=(float)(i+1);
??printf(“location---%d:??“i+1);
??for(j=0;j??{kmatrix[i][j]=randomreal(min_column[i]max_column[i]);printf(“%f???“kmatrix[i][j]);}
??printf(“\n“);
}
}

int?existemptyclass()
{
int?*emptyijef;
empty=(int?*)malloc(sizeof(int)*K);
for(i=0;i for(i=0;i {
for(j=1;j<=K;j++)
{
if(j==(int)data[i][Vectordim])?empty[j-1]++;
}
}
for(i=0ef=0;i if(0==empty[i])?ef=1;
return?ef;
}

int?cluster()
{
int?ijflageflag=1;
double?closestd;
for(i=0;i{
closest=euclid_distance(data[i]kmatrix[0]Vectordim);
flag=1;

???for(j=1;j {
??d=euclid_distance(data[i]kmatrix[j]Vectordim);
??if(d????}
if(data[

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????332??2009-11-17?01:11??kmeans\data\data.txt

?????文件????????141??2009-11-17?01:14??kmeans\data\data2.txt

?????文件?????????89??2009-11-17?01:36??kmeans\data\說明.txt

?????文件????????332??2009-11-17?01:11??kmeans\data.txt

?????文件???????4728??2009-11-17?01:22??kmeans\k.c

?????文件??????24064??2009-11-17?01:34??kmeans\readme.doc

?????目錄??????????0??2009-11-17?01:37??kmeans\data

?????目錄??????????0??2009-11-17?01:35??kmeans

-----------?---------??----------?-----??----

????????????????29686????????????????????8


評論

共有 條評論