You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python层次聚类按指定距离切割时如何获取各聚类及成员列表?

你可以使用 scipy.cluster.hierarchy 模块中的fcluster函数完成树图切割和聚类提取,具体实现步骤和代码如下:

步骤1:导入依赖

只需要额外导入fcluster函数即可,不需要其他额外依赖:

from scipy.cluster.hierarchy import fcluster

步骤2:按指定距离阈值切割聚类

在你已有代码生成 linkage 矩阵Z和样本标签列表labels后,添加如下代码:

# 按距离阈值2切割树图,返回每个样本对应的聚类编号
cluster_ids = fcluster(Z, t=2, criterion='distance')

# 按聚类编号分组,整理每个聚类包含的样本名称
cluster_result = {}
for sample_name, cid in zip(labels, cluster_ids):
    cluster_result.setdefault(cid, []).append(sample_name)

步骤3:查看结果

直接遍历输出结果即可:

for cid, members in cluster_result.items():
    print(f"聚类{cid}样本:{members}")

针对你的数据集的输出示例

聚类1样本:['DN10172_i1']
聚类2样本:['DN1357_i1', 'DN1357_i2', 'DN1357_i5']

代码说明

  • fcluster的参数t就是你设置的切割距离阈值
  • 参数criterion='distance'表示按距离规则切割,保证同一个聚类内所有样本的共表距离不超过设置的阈值
  • 返回的cluster_ids顺序和你之前定义的labels顺序完全一一对应,直接配对即可得到每个样本所属聚类

内容的提问来源于stack exchange,提问作者MySky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:27:03