2 近鄰傳播聚類
基本思想:將全部資料點都當作潛在的聚類中心(稱之為exemplar),然後資料點兩兩之間連線構成一個網路(相似度矩陣),再透過網路中各條邊的訊息(吸引度responsibility和歸屬度availability)傳遞計算出各樣本的聚類中心。R (i, k)+A (i, k)越大,則k點作為聚類中心的可能性就越大,並且i點隸屬於以k點為聚類中心的聚類的可能性也越大。
2 近鄰傳播聚類
優點:1.不需要指定最終聚類的個數;2.已有的資料點作為最終的聚類中心,而不是新生成一個類質心;3.對資料的初始值不敏感;4.對初始相似度矩陣資料的對稱性沒有要求;5.與k-中心點聚類方法相比,結果的平方差誤差較小。
缺點:1.AP演算法需要事先計算每對資料物件之間的相似度,對記憶體要求高;2.AP演算法的時間複雜度高,聚類的好壞受到阻尼係數的影響
實現(python)
AffinityPropagation()中的主要引數:1. damping : 阻尼係數,預設為0.5,取值[0.5,1);2. convergence_iter :比較多少次聚類中心不變之後停止迭代,預設15;3. max_iter :最大迭代次數,預設為200。
主要屬性:1. cluster_centers_indices_ : 存放聚類中心的陣列;2. labels_ :存放每個點的分類的陣列;3. n_iter_ : 迭代次數;主要方法同k-means()
3 層次聚類
基本思想:先計算樣本之間的距離。每次將距離最近的點合併到同一個類。然後,再計算類與類之間的距離,將距離最近的類合併為一個大類。不停地合併,直到合成了一個類。其中類與類的距離的計算方法有:最短距離法,最長距離法,中間距離法,類平均法等。比如最短距離法,將類與類的距離定義為類與類之間樣本的最短距離。層次聚類演算法根據層次分解的順序分為:自下底向上的凝聚層次聚類演算法和自上向下的分裂層次聚類演算法
實現(python)
基於sklearn的實現聚類結果的解釋:
1.X一共有5個樣本,那麼在進行層次聚類是,這5個樣本各自一類,類別名稱是0、1、2、3、4
2.第一行:[0, 3]意思是類別0和類別3距離最近,首先聚成一類,並自動定義類別為5(=len(X)-1+1)
3.第二行:[4, 5]意思是類別4和上面聚類的新類別5距離為第二近,4、5聚成一類,類別為6(=len(X)-1+2)
4.第三行:[1, 2]意思是類別1、類別2距離為第三近,聚成一類,類別為7(=len(X)-1+3)
5.第四行:[6, 7]意思是類別6、7距離為第四近,聚成一類,類別為8(=len(X)-1+4)
6.因為類別5有兩個樣本,加上類別4形成類別6,有3個樣本;
7.類別7是類別1、2聚類形成,有兩個樣本;
8.類別6、7聚成一類後,類別8有5個樣本,這樣X全部樣本參與聚類,聚類完成。
基於scipy的實現:
method是指計算類間距離的方法,比較常用的有3種: (1)single:最近鄰 ,(2)complete:最遠鄰, (3)average:平均距離,其他的method還有如weighted,centroid等
4基於密度的聚類DBSCAN
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚類演算法,它是一種基於高密度連通區域的、基於密度的聚類演算法,能夠將具有足夠高密度的區域劃分為簇,並在具有噪聲的資料中發現任意形狀的簇。聚類的時候不需要預先指定簇的個數,最終的簇的個數不定
DBSCAN演算法需要使用者輸入2個引數:一個引數是半徑(Eps),表示以給定點P為中心的圓形鄰域的範圍;另一個引數是以點P為中心的鄰域內最少點的數量(MinPts)。如果滿足:以點P為中心、半徑為Eps的鄰域內的點的個數不少於MinPts,則稱點P為核心點。
實現(以k-均值聚類為例):
這裡的輸出結果為資料x中所有物件s(i)值的平均數。解讀方式與前面相同。