一、層次聚類簡介
層次聚類,也稱為連鎖聚類,顧名思義,便是將數據點逐層聚合的過程,直到構造出一棵樹形結構,完成聚類。這個過程中,我們可以通過選擇不同的距離度量方式和決策法則,得到不同的聚類效果。
其中,距離度量方式包括曼哈頓距離、歐式距離、切比雪夫距離等;決策法則包括單連接、全連接和平均連接等形式。
在建立層次聚類的過程中,我們不需要設定聚類的數量,而是通過樹形結構的「高」和「低」來進行聚類的控制。最後,通過剪枝和劃分樹形結構,得到想要的聚類數量。
二、Python層次聚類的實現
Python中層次聚類主要通過scipy庫進行實現。scipy.cluster.hierarchy模塊提供了實現層次聚類所需的工具函數和類。該模塊主要提供以下函數:
linkage(y, method='single', metric='euclidean', optimal_ordering=False)
- y:待聚類的距離矩陣或待聚類的數據集
- method:指定線段之間的距離計算方法
- metric:指定向量間的距離計算方法
- optimal_ordering:是否進行優化排序
以下是實現Python層次聚類的示例代碼:
import scipy.cluster.hierarchy as sch import numpy as np X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) Z = sch.linkage(X, 'ward')
三、距離計算方式的選擇
層次聚類核心是計算數據點之間的距離,根據不同的距離計算方法,得到的聚類結果也不同。常見的距離計算方式包括歐式距離、曼哈頓距離、切比雪夫距離和閔可夫斯基距離。
以計算歐式距離為例,以下是示例代碼:
import numpy as np from scipy.spatial.distance import pdist X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) D = pdist(X, metric='euclidean')
四、決策法則的選擇
決策法則是指在進行樣本聚類的過程中,在已經選擇的類別之間確定樣本點之間的距離。常見的決策法則有單連接、全連接和平均連接等。
以選擇平均連接為例,以下是示例代碼:
import scipy.cluster.hierarchy as sch import numpy as np X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) Z = sch.linkage(X, method='average')
五、決策樹的可視化
通過可視化層次聚類的決策樹,可以更清晰地理解聚類的過程和結果。
以下是利用matplotlib庫實現層次聚類可視化的示例代碼:
import scipy.cluster.hierarchy as sch import numpy as np import matplotlib.pylab as plt X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) Z = sch.linkage(X, method='average') plt.figure(figsize=(10, 6)) sch.dendrogram(Z) plt.show()
六、層次聚類的優點和缺點
優點:
- 適用於不同的數據類型、不同的距離度量方式和決策法則。
- 通過樹形結構直觀地表示了聚類的過程和結果。
- 對於小樣本聚類效果較好。
缺點:
- 層次聚類計算量巨大,時間複雜度高。
- 對於大數據量的聚類效果不佳。
- 樹形結構難以直觀地解釋聚類的數量和結構。
原創文章,作者:CPRDD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/370144.html