K means聚類 數學建模

2021-09-29 02:29:11 字數 1874 閱讀 9175

k-means(k-均值聚類演算法)是劃分聚類分割的方法,將乙個有n個元組或記錄的資料集,**成k個分組,每個分組就是乙個聚類,k1.每個分組至少包含乙個資料記錄

2.每個資料記錄屬於且僅屬於乙個分組

演算法步驟:

1.任意選擇k個物件作為初始聚類中心

2.計算每個物件與聚類中心的距離,並根據最小距離重新劃分

3.重新計算聚類中心,直到聚類中心不再變化,這種劃分使得下式最小:

xi為第i樣本點的位置;mj為第j個聚類中心的位置。

4.迴圈2 3 步,直到聚類中心不再改變。

特點:

採用兩階段反覆迴圈過程演算法

結束條件:不再有資料元素被重新分配

matlab**:

%% 資料準備和初始化

clcclear

x=[0 0;1 0; 0 1; 1 1;2 1;1 2; 2 2;3 2; 6 6; 7 6; 8 6; 6 7; 7 7; 8 7; 9 7 ; 7 8; 8 8; 9 8; 8 9 ; 9 9];

z=zeros(2,2);

z1=zeros(2,2);

z=x(1:2, 1:2);

%% 尋找聚類中心

while 1

count=zeros(2,1);

allsum=zeros(2,2);

for i=1:20 % 對每乙個樣本i,計算到2個聚類中心的距離

temp1=sqrt((z(1,1)-x(i,1)).^2+(z(1,2)-x(i,2)).^2);

temp2=sqrt((z(2,1)-x(i,1)).^2+(z(2,2)-x(i,2)).^2);

if(temp1

count(1)=count(1)+1;

allsum(1,1)=allsum(1,1)+x(i,1);

allsum(1,2)=allsum(1,2)+x(i,2);

else

count(2)=count(2)+1;

allsum(2,1)=allsum(2,1)+x(i,1);

allsum(2,2)=allsum(2,2)+x(i,2);

endend

z1(1,1)=allsum(1,1)/count(1);

z1(1,2)=allsum(1,2)/count(1);

z1(2,1)=allsum(2,1)/count(2);

z1(2,2)=allsum(2,2)/count(2);

if(z==z1)

break;

else

z=z1;

endend%% 結果顯示

disp(z1);% 輸出聚類中心

plot( x(:,1), x(:,2),'k*',...

'linewidth',2,...

'markersize',10,...

'markeredgecolor','k',...

'marke***cecolor',[0.5,0.5,0.5])

hold on

plot(z1(:,1),z1(:,2),'ko',...

'linewidth',2,...

'markersize',10,...

'markeredgecolor','k',...

'marke***cecolor',[0.5,0.5,0.5])

set(gca,'linewidth',2) ;

xlabel('特徵x1','fontsize',12);

ylabel('特徵x2', 'fontsize',12);

title('k-means分類圖','fontsize',12);

Python資料建模 K means聚類

k means聚類的python實現方法 介紹 最常用的機器學習聚類演算法,且為典型的基於距離的聚類演算法 k均值 基於原型的 劃分的距離技術,它試圖發現使用者指定個數 k 的簇,以歐式距離作為相似度測度 from sklearn.datasets.samples generator import ...

K Means聚類演算法

k means聚類演算法 intergret kmeans演算法的基本思想是初始隨機給定k個簇中心,按照最鄰近原則把待分類樣本點分到各個簇。然後按平均法重新計算各個簇的質心,從而確定新的簇心。一直迭代,直到簇心的移動距離小於某個給定的值。k means聚類演算法主要分為三個步驟 1 第一步是為待聚類...

聚類演算法 K means

演算法接受引數 k 然後將事先輸入的n個資料物件劃分為 k個聚類以便使得所獲得的聚類滿足 同一聚類中的物件相似度較高 而不同聚類中的物件相似度較小。聚類相似度是利用各聚類中物件的均值所獲得乙個 中心物件 引力中心 來進行計算的。k means演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演...