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演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演...