在Scipy中修剪树状图(层次聚类)可以使用scipy.cluster.hierarchy
模块中的linkage
函数。linkage
函数用于计算层次聚类(树状图)的相似度矩阵。以下是一个示例代码:
from scipy.cluster.hierarchy import linkage, dendrogram
import matplotlib.pyplot as plt
# 假设我们有一个距离矩阵,它表示样本之间的相似度
distances = [[0, 1, 0.5, 0.8, 0.9, 0.2, 0.4],
[1, 0, 0.6, 0.8, 0.9, 0.1, 0.5],
[0.5, 0.6, 0, 0.4, 0.8, 0.9, 0.2],
[0.8, 0.8, 0.4, 0, 0.2, 0.5, 0.6],
[0.9, 0.9, 0.8, 0.2, 0, 0.4, 0.8],
[0.2, 0.1, 0.9, 0.5, 0.4, 0, 0.9],
[0.4, 0.5, 0.2, 0.6, 0.8, 0.9, 0]]
# 使用linkage函数计算层次聚类
Z = linkage(distances, method='ward')
# 绘制树状图
plt.figure()
dendrogram(Z)
plt.xlabel('样本索引')
plt.ylabel('距离')
plt.title('层次聚类:树状图')
plt.show()
在这个示例中,我们使用linkage
函数计算层次聚类,并将结果存储在Z
变量中。然后,我们使用dendrogram
函数绘制树状图。dendrogram
函数需要接收一个相似度矩阵(例如,通过distances
变量计算得到)和一个聚类数(默认为2),并返回一个树状图。
这个示例代码将绘制一个简单的树状图,展示了样本之间的层次聚类。你可以根据需要调整distances
变量的值,以适应你的数据集。
领取专属 10元无门槛券
手把手带您无忧上云