1、腳本
# scikit-learn 沒有繪制樹狀圖的功能,需借助 SciPy 庫完成
import matplotlib.pyplot as plt from sklearn.datasets import make_blobs from scipy.cluster.hierarchy import dendrogram, ward # 生成模擬數據
X, y = make_blobs(n_samples=13, random_state=42 ) # 在數據組 X 上應用 ward 聚類函數,返回聚類過程中所跨越距離的數組
linkage_array = ward(X) # 繪制樹狀圖
dendrogram(linkage_array) # 標記數中划分為兩個和三個簇的位置
ax = plt.gca() bounds = ax.get_xbound() plt.plot(bounds, [27, 27], '-.', c='y') plt.plot(bounds, [14, 14], '-.', c='y' ) plt.text(x=bounds[1], y=27, s=' two clusters', va='center', fontsize=15 ) # 添加文本注釋
plt.text(x=bounds[1], y=14, s=' three clusters', va='center', fontsize=15 ) # 調整子區布局
plt.subplots_adjust(left=0.1, right=0.75, top=0.9, bottom=0.1 ) plt.show()
2、聚類過程的示意樹狀圖
3、按語
此樹狀圖的底部顯示的是數據點,這些數據點作為葉節點最終形成一棵聚類樹,每合並兩個兩個簇就生成一個父節點。