kmenas及其改進算法(python和matlab實現)

December 13, 2015 6:45 PM

  聚類分析是一種靜態數據分析方法,常被用於機器學習,模式識別,數據挖掘等領域。通常認爲,聚類是一種無監督式的機器學習方法,它的過程是這樣的:在未知樣本類別的情況下,通過計算樣本彼此間的距離(歐式距離,馬式距離,漢明距離,餘弦距離等)來估計樣本所屬類別。從結構性來劃分,聚類方法分爲自上而下和自下而上兩種方法,前者的算法是先把所有樣本視爲一類,然後不斷從這個大類中分離出小類,直到不能再分爲止;後者則相反,首先所有樣本自成一類,然後不斷兩兩合併,直到最終形成幾個大類。
  Kmeans聚類是一種自下而上的聚類方法,它的優點是簡單、速度快;缺點是聚類結果與初始中心的選擇有關係,且必須提供聚類的數目。Kmeans的第二個缺點是致命的,因爲在有些時候,我們不知道樣本集將要聚成多少個類別,這種時候kmeans是不適合的,推薦使用hierarchical 或meanshift來聚類。第一個缺點可以通過多次聚類取最佳結果來解決。
  Kmeans的計算過程大概表示如下隨機選擇k個聚類中心. 最終的類別個數<= k計算每個樣本到各個中心的距離每個樣本聚類到離它最近的中心重新計算每個新類的中心重複以上步驟直到滿足收斂要求。(通常就是中心點不再改變或滿足一定迭代次數)。
以下爲分別用python和matlab實現的代碼,供大家學習和討論。
python版本:

#Kmeans.py
#2015.11.08
#Email:[email protected]

from pylab import *

#Display the Chinese
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章