#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個物件作為初始聚類中心。設定迭...