1. 程式人生 > >聚類演算法—K-Means原理與應用

聚類演算法—K-Means原理與應用

聚類演算法是一類非監督學習的演算法,在給定的一個數據集中,給了N個樣本,沒有給出樣本對應的標籤類別資料y,可以利用聚類演算法,進行標籤的分類。

K-Means演算法的原理與步驟:

1>   在N個樣本總體中,隨機抽出k個初始資料的質心,接著把資料集中的樣本取出,計算樣本離各個質心的距離,把樣本歸到離質心最近的一個簇裡

2>   計算每個簇的樣本特徵的平均值,得到各簇新的質心

3>   迭代以上兩個步驟,直到滿足下邊的公式:(即代價函式的值最小,質心的座標不再變化,或者變化很小時)

聚類演算法的缺點:

1> 在不知道樣本資料集的資料有幾個分類時,k值是開發人員設定的,如果k值一次設定的不合適,需要隨機再設定,最後才能使模型收斂。

    注:這裡模型收斂的情況下,也可能只是達到了區域性最小值,這時候需要改進模型,後邊再講

2> 每次聚類的過程,使模型收斂通常要經過大量的迭代過程

下面是舉的一個例子:這裡是用了sklearn提供的KMeans方法

從csv檔案中,取出一萬多條資料,取出資料中對應兩個特徵的兩個列,進行聚類,結果得出,它被分為了3個類別,下邊兩種圖分別為,初始質心點k = 2,與初始質心點k=3,兩種情況下,聚類的效果圖表:(很顯然k=3時更合適)

k=2

k=3

下面是這個例子demo的下載地址:demo