k-means聚類算法實例分析


轉自https://blog.csdn.net/chichoxian/article/details/84075128

寫在前面的話

k-means 算法是一個聚類的算法 也就是clustering 算法。是屬於無監督學習算法,也是就樣本沒有label(標簽)的算分,然后根據某種規則進行“分割”, 把相同的或者相近的objects 物體放在一起。

在這里K就是我們想要分割的的聚類的個數。

當然了,很多資料都會說這個算法吧,畢竟簡單粗暴可依賴

算法描述

首先我們有以下的幾個點

A1 (2,10)
A2 (2,5)
A3 (8,4)
A4 (5,8)
A5 (7,5)
A6 (6,4)
A7 (1,2)
A8 (4,9)
這個算法不能幫助我們自動分類,所以我們需要指定我們需要的個數。其實在很多實際應用當中,我們很難知道我們的數據是什么分布的,應該分成幾類比較好。這也是k-means自身的一個缺陷,所以不能幫助我們自動的聚類。

注:如果我在本文中說了分類,其實是分割的意思,我想表達的意思是聚類。
中文和英文切換,在意思上表達真的有點差距。

現在假設我們需要把上面的數據點分成三類。我們需要遵循下面的幾個步驟

選取三個類的初始中心
計算剩余點到這三個中心的距離
將距離中心點距離最短的點歸為一類
依次划分好所有的數據點
重新計算中心
重復2-5 個步驟,直到中心點不會在變化為止
現在看完步驟,其實可能會有一些疑問:
1. 怎么選擇我們的初始中心點?
2. 怎么計算點之間的距離呢。

選擇中心點

中心點怎么選擇,一般情況下我們是隨機的從我們的數據集中選擇的。當然還會有其他的方法,我們在之后的文章中可能會討論。如果我還有時間去寫的話,一般我會有時間寫的。

甚至這個中心點的選擇可以是完全隨機的,甚至都不需要從我們的數據集中選取,在這里,我們的數據集是一個二維的,所以我們可以選擇在XY坐標上的任意三個點,隨你高興都是可以的

注意:中心點的選取不同,最后的聚類結果可能大不相同

在這里我們假設我們的三個初始點是A,
在這里我們選取的初始點是A1,A4,A7

在這里我們定義兩個點之間的距離用曼哈頓聚類距離,也可以叫做城市街區距離。


在這里我們是二維坐標,所以我們可以按照下面這個公式:


下面是一個例子:


計算的一般過程:

我們先看第一輪:


選取距離最近的歸為一類
這個時候我們得到的聚類的結果:


得到了第一輪的結果我們需要重新的計算每個聚類的中心

cluster1
對於第一個聚類只有一個點所以它的聚類的中心就是它自己。

Cluster2
X:
(8+5+7+6+4)/5 = 6
Y:
(4+8+5+4+9)/5 = 6

這個時候它的中心就變成了(6,6)

Cluster3:
X:
(2+1)/2 = 1.5
Y:
(5+2)/2 = 3.5

這個時候在進行第二輪迭代:


這個時候再次計算中心:

 

這個時候用我們的新的中心再來計算一遍:

 

這個時候我們在重新根據新的聚類重新計算我們的中心:

 

得到新的點之后我們在重新計算新的聚類

 

這個時候發現和上一次的結果是一致的,這個時候我們就可以停止我們的算法了。

下面我們來看一下這個迭代過程的圖譜。

這個是我們的的初始過程


之后是我們選取中心點:


依次迭代的過程:

 

 


————————————————
版權聲明:本文為CSDN博主「君的名字」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/chichoxian/article/details/84075128


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM