Python中的层次聚类分析方法:介绍fcluster()函数的基本用法
在Python中,可以使用SciPy库中的hierarchy模块来进行层次聚类分析。层次聚类是一种无监督学习方法,通过将数据集中的样本逐步分割为越来越小的聚类来组织数据。fcluster()是hierarchy模块中的一个函数,用于对给定的层次聚类结果进行聚类标签分配。
fcluster()函数的基本用法如下:
scipy.cluster.hierarchy.fcluster(Z, t, criterion='inconsistent', depth=2, R=None, monocrit=None)
参数说明:
- Z:层次聚类的结果,通常是通过linkage()函数计算得到的聚类链表。
- t:一个阈值,用于指定聚类划分的方式。具体取值根据criterion参数的设置而有所不同。
- criterion:一个可选的字符串参数,用于指定如何计算聚类划分的阈值。
- depth:一个可选的整数参数,用于设定聚类深度的方式。
- R:一个聚类结果列表,用于保存子级集群。
- monocrit:一个可选的布尔值参数,用于指定嵌套聚类的方式。
下面是一个使用fcluster()函数的例子:
import numpy as np from scipy.cluster.hierarchy import dendrogram, linkage from scipy.cluster.hierarchy import fcluster # 生成随机数据 np.random.seed(0) X = np.random.randn(10, 2) # 使用层次聚类计算聚类链表 Z = linkage(X, 'single') # 设置阈值,生成聚类标签 t = 1.0 labels = fcluster(Z, t, criterion='distance') # 打印聚类结果 print(labels)
运行以上代码,会输出生成的聚类标签。在这个例子中,我们生成了10个随机样本,然后使用linkage()函数计算了聚类链表。然后,我们将阈值设置为1.0,并使用fcluster()函数根据阈值生成聚类标签。
输出结果可能为 [2 2 2 2 2 1 1 1 1 1],表示这10个样本被分成了两个聚类。其中前5个样本被标记为1,后5个样本被标记为2。
fcluster()函数中的criterion参数可以设置不同的值以调整聚类划分的方式,它的默认值是'inconsistent'。其他可选值包括'distance'、'maxclust'、'monocrit'和'maxclust_monocrit'。这些值控制了如何计算聚类划分的阈值。
总结起来,fcluster()函数是一个用于对层次聚类结果进行聚类标签分配的函数,它可以根据不同的阈值和聚类划分方式来生成聚类标签。
