機器學習實戰 K均值聚類

2021-09-24 10:54:37 字數 1620 閱讀 6772

1.概述

聚類是一種無監督學習,它將相似的物件歸到同乙個簇中。聚類方法幾乎可以應用於所有物件,簇內的物件越相似,聚類的效果越好。

k-均值聚類之所以稱為是因為它可以發現k個不同的簇,且每個簇的中心採用簇中所含值的均值計算而成。

2.簇識別(cluster identification)

簇識別給出聚類結果的含義。假定有一些資料,現在將相似資料歸到一起,簇識別會告訴我們這些簇到底都是些什麼。聚類和分類的最大不同在於,分類的目標事先已知,而聚類則不一樣。因為其產生的結果魚分類相同,而只是類別沒有預先定義,聚類有時也被稱為無監督分類。

3.k-均值聚類

優點:容易實現

缺點:可能收斂到區域性最小值,在大規模資料集上收斂較慢。

適用資料型別:數值型資料。

k-均值是發現給定資料集的k個簇的演算法。簇的個數k是使用者給定的,每個簇通過其質心,即簇中所有點的中心來描述。

演算法的流程:首先,隨機確定k個初始點作為質心。然後,將資料集中的每個點分配到乙個簇中,具體來講,為每個點找距其最近的質心,並將其分配給該質心所對應的簇。這一步完成之後,每個簇的質心更新為該簇所有點的平均值。

偽**:

一般流程:

k由使用者預先定義,那麼使用者如何才能知道k的選擇是否正確?如何才能知道生成的簇比較無好呢?

在包含簇分配結果的矩陣中儲存著每個點的誤差,即該點到簇質心的距離平方值。

k均值演算法收斂但是聚類效果較差的原因是,k均值演算法收斂到了區域性最小值,而非全域性最小值。

一種度量聚類效果的指標是sse(sum of squared error,誤差平方和)。sse值越小表示資料點越接近於它們的質心,聚類的效果也越好。因為對誤差取了平方,因此更加重視那些遠離中心的點。

對生成的簇進行後處理,一種方法是將具有最大sse值的簇劃分成兩個簇。具體實現時可以將最大簇包含的點過濾出來並在這些點上執行k均值演算法(k設為2)。

為了保持簇的總數不變,可以將兩個簇進行合併。有兩種可以量化的方法:合併最近的質心,或者合併兩個使得sse增幅最小的質心。

為克服k-均值演算法收斂於區域性最小值的問題,有人提出了另乙個稱為二分k-均值(bisecting k-means)的演算法。

該演算法首先將所有點作為乙個簇,然後將該簇一分為二。之後選擇其中乙個簇繼續進行劃分,選擇哪乙個簇進行劃分取決於對其劃分是否可以最大程度降低sse的值。上述基於sse的劃分過程不斷重複,直到得到使用者指定的簇數目為止。

偽**:

7.小結

k-均值演算法非常有效但是也容易受到初始簇質心的影響。為了獲得更好的聚類效果,可以使用另一種稱為二分k均值的聚類演算法。

k-均值演算法以及變形的k-均值演算法並非僅有的聚類演算法,另外稱為層次聚類的演算法也被廣泛使用。

K 均值聚類

剛剛寫了篇分級聚類的,趁著餘熱,再寫一下關於k 均值聚類的。為了突出k 均值聚類的特點,先黑一下分級聚類。跟k 均值聚模擬起來,分級聚類演算法有一下缺點 第一,的那個沒有額外投入的時候,樹形試圖是不會真正將資料拆分成不同組的。第二,分級聚類的計算演算法計算量相當大。當兩個節點合併之後,節點之間的距離...

k均值聚類

k均值聚類就是利用歐氏距離的度量將距離相近的樣本分為k類 a.假設有m個樣本,首先隨機選擇k個樣本作為聚類的質心 要分成k類 b.然後對於每個樣本,計算它到每個質心的距離,將它歸類於距離最小的那個質心 c.接著對初步分類的k個類別重新計算該類的質心,也就是對每個類別的樣本座標求平均 d.重複 b 步...

機器學習實戰 K 均值學習筆記

k 均值 因為可以發現k個不同的簇,且每個簇的中心採用簇中所含的均值計算而成。聚類和分類的區別 最大的區別在於,分類的目標事先已知,而聚類的不一樣,其產生的結果和分類相同,但是類別沒有預先定義,因此聚類有時候也被稱為無監督分類 如下 from numpy import def loaddataset...