譜系聚類是Python中非常有用的一種聚類算法,它可以將數(shù)據(jù)集中的樣本分成互不重疊的幾個(gè)類別。譜系聚類通過計(jì)算樣本之間的相似度和距離來確定聚類結(jié)果,其最終聚類結(jié)果具有很好的可視化效果。
# 安裝必要的Python庫 !pip install numpy !pip install pandas !pip install scipy !pip install matplotlib !pip install sklearn # 導(dǎo)入必要的Python庫 import numpy as np import pandas as pd from scipy.cluster.hierarchy import dendrogram, linkage from matplotlib import pyplot as plt %matplotlib inline # 加載數(shù)據(jù) iris_data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None) # 將數(shù)據(jù)集拆分為特征和目標(biāo) X = iris_data.iloc[:, :-1].values y = iris_data.iloc[:, 4].values # 計(jì)算距離矩陣 Z = linkage(X, 'ward') # 繪制譜系聚類樹形圖 plt.figure(figsize=(10, 5)) dendrogram(Z, leaf_rotation=90., leaf_font_size=8., color_threshold=2.8) plt.xlabel('Cluster size') plt.ylabel('Distances') plt.title('Hierarchical Clustering Dendrogram') plt.axhline(y=2.8, color='black', linestyle='--') plt.show()
上述代碼將經(jīng)典的鳶尾花數(shù)據(jù)集(Iris dataset)進(jìn)行了譜系聚類分析,并最終繪制出了譜系聚類樹形圖。需要注意的是,這里使用了ward算法對(duì)數(shù)據(jù)進(jìn)行聚類,因?yàn)樗軌蛟诰垲愡^程中最大程度地減少聚類內(nèi)的方差,并保證最終的聚類結(jié)果的質(zhì)量。