吳恩達老師機器學習筆記K-means聚類演算法(一)
阿新 • • 發佈:2018-11-05
今天接著學習聚類演算法
以後堅決要八點之前起床學習!不要浪費每一個早晨。
K-means聚類演算法聚類過程如下:
原理基本就是先從樣本中隨機選擇聚類中心,計算樣本到聚類中心的距離,選擇樣本最近的中心作為該樣本的類別。最後某一類樣本的座標平均值作為新聚類中心的座標,如此往復。
原始資料如下:
程式碼如下:
load('ex7data2'); [m n]=size(X); x=zeros(m,n+1); x(1:m,1:n)=X; Z_min=9999999; y=zeros(m,1); % 最優類別結果 for iter=1:100 % 選擇最優的聚類的結果 start=round(rand(3,1)*(m-1)+1); % 隨機化聚類中心 start_centre=X(start,:); Z_sum=0; for j=1:200 % 判斷樣本距離最近的中心 for i=1:m Z=sum((x(i,1:n)-start_centre(:,1:n)).^2,2); [min_value,min_index]=min(Z); x(i,n+1)=min_index; end for i=1:3 % 聚類數量選擇3類 start_centre(i,:)=mean(X(x(:,n+1)==i,:)); % 生成新的聚類中心 end end for i=1:m % 計算成本函式 Z_sum=sum((x(i,1:n)-start_centre(x(i,n+1),1:n)).^2,2)+Z_sum; end if Z_min>Z_sum % 選取成本最小的結果作為最優結果 Z_min=Z_sum; y=x(:,n+1); end end scatter(X(:,1),X(:,2),8,y,'filled');
最後聚類結果如下:
這次程式碼非常的簡單了。。。。