Python层次聚类画出树状图
2024.02.17 19:34浏览量:8简介:在Python中,我们使用Scikit-learn库的AgglomerativeClustering和dendrogram模块,可以实现层次聚类并绘制树状图。以下是一个简单的例子:
首先,我们需要安装必要的库。如果你还没有安装,可以使用pip来安装:
pip install numpy matplotlib scikit-learn pandas
然后,我们可以使用以下代码进行层次聚类并绘制树状图:
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.cluster import AgglomerativeClusteringfrom sklearn.datasets import make_blobsfrom sklearn.preprocessing import scalefrom scipy.spatial.distance import pdist, squareform# 生成样本数据centers = [[1, 1], [-1, -1], [1, -1]]X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4, random_state=0)X = scale(X)# 计算距离矩阵D = squareform(pdist(X, 'euclidean'))Z = AgglomerativeClustering(n_clusters=3, distance=D, affinity='precomputed').fit(D)# 绘制树状图fig = plt.figure(figsize=(10, 7))_ = plt.title('Hierarchical Clustering Dendrogram')dendrogram = ax.dendrogram(Z.children_, orientation='top', distance_sort='descending')plt.show()
在这个例子中,我们首先生成了一些样本数据,然后计算了这些数据之间的欧几里得距离。接着,我们使用AgglomerativeClustering类进行层次聚类,并使用dendrogram函数绘制了树状图。在树状图中,每个节点表示一个数据点,如果两个数据点被聚类到一起,那么这两个节点就会合并成一个新的节点。树状图的顶部表示所有的数据点都聚类在一起,底部表示每个数据点都是一个独立的聚类。
注意,层次聚类的时间复杂度较高,因此对于大数据集可能不太适用。此外,选择合适的距离度量和聚类数也是层次聚类中的一个重要问题。

发表评论
登录后可评论,请前往 登录 或 注册