k 均值聚類演算法C語言原始碼

2021-05-28 10:13:44 字數 1329 閱讀 8977

#include #include #define true            1

#define false 0

int n;//資料個數

int k;//集合個數

int * centerindex;//初始化質心陣列的索引

double * center;//質心集合

double * centercopy;//質心集合副本

double * alldata;//資料集合

double ** cluster;//簇的集合

int * top;//集合中元素的個數,也會用作棧處理

//隨機生成k個數x(0<=x<=n-1)作為起始的質心集合

void createrandomarray(int n, int k,int * center)

else

} }

//返回距離最小的質心的序號

int getindex(double value,double * center)

}}//判斷2陣列元素是否相等

int isequal(double * center1 ,double * center2)

center=(double *)malloc(sizeof(double)*k);//為質心集合申請空間

centerindex=(int *)malloc(sizeof(int)*k);//為質心集合索引申請空間

centercopy=(double *)malloc(sizeof(double)*k);//為質心集合副本申請空間

top=(int *)malloc(sizeof(int)*k);

alldata=(double *)malloc(sizeof(double)*n);//為資料集合申請空間

cluster=(double **)malloc(sizeof(double *)*k);//為簇集合申請空間

//初始化k個簇集合

for(i=0;iprintf("輸入%d資料: ",n);

for(i=0;iinitcenter();//初始化質心集合

updatecluster();//初始化k個簇集合

}/*演算法描述:

k均值演算法:

給定類的個數k,將n個物件分到k個類中去,

使得類內物件之間的相似性最大,而類之間的相似性最小。

*/main()

else//否則將質心副本置為本次迭代得到的的質心集合

}print();//輸出結果

getchar();

getchar();

}

k均值聚類演算法

輸入 簇的數目k和包含n個物件的資料庫。輸出 k個簇,使平方誤差準則最小。演算法步驟 1.為每個聚類確定乙個初始聚類中心,這樣就有k 個初始聚類中心。2.將樣本集中的樣本按照最小距離原則分配到最鄰近聚類 3.使用每個聚類中的樣本均值作為新的聚類中心。4.重複步驟2.3直到聚類中心不再變化。5.結束,...

K 均值聚類演算法

from numpy import 建立元組 dataset 與我們所熟悉的矩陣類似,最終我們將獲得n 2的矩陣,filein open home zengxl pycharmprojects test3 機器學習實戰 ch10 testset.txt 是正斜槓 for line in filein...

K 均值聚類演算法

k means演算法是最簡單的一種聚類演算法。演算法的目的是使各個樣本與所在類均值的誤差平方和達到最小 這也是評價k means演算法最後聚類效果的評價標準 k means聚類演算法的一般步驟 初始化。輸入基因表達矩陣作為物件集x,輸入指定聚類類數n,並在x中隨機選取n個物件作為初始聚類中心。設定迭...