You need to enable JavaScript to run this app. Python下hierarchical agglomerative clustering簇文章计数及簇名获取问题
优惠活动
大模型
产品
解决方案
定价
更多

Python下hierarchical agglomerative clustering簇文章计数及簇名获取问题

参考你提到的HAC簇创建流程的标准实现(基于sklearn,工业界最常用的HAC开发接口):

from sklearn.cluster import AgglomerativeClustering
import numpy as np
import pandas as pd

# 假设X是你预处理完成的文章特征矩阵(如TF-IDF、句向量矩阵)
hac_model = AgglomerativeClustering(n_clusters=5, linkage='ward')
hac_model.fit(X)
对应问题的解决方案

1. 一行代码统计并展示各簇的文章数量

两种常用单行实现,直接运行即可输出结果:

  • 带清晰格式的直观输出(推荐用pandas版本):
    print(pd.Series(hac_model.labels_).value_counts().sort_index())
    输出会自动按簇ID排序,同时展示每个簇对应的文章计数,适合快速核对簇分布。
  • 纯numpy无额外依赖的实现:
    print({cid: cnt for cid, cnt in zip(*np.unique(hac_model.labels_, return_counts=True))})
    直接输出字典结构的簇ID-文章数映射,不需要依赖pandas。

2. 获取算法生成的所有簇的名称标识

首先明确:HAC算法本身没有内置的语义化命名逻辑,所有簇的官方唯一标识就是拟合完成后输出的整数型ID。

  • 提取所有簇的内置标识列表:
    cluster_ids = np.unique(hac_model.labels_)
    拿到的数组就是所有不重复的簇ID集合,和前面统计的计数键完全一一对应。
  • 如果需要自定义语义化簇名(比如提取簇内高频关键词命名),可以自行建立映射关系:
    比如先定义cluster_name_map = {0: "时政类文章", 1: "文娱类文章", ...},之后通过列表推导[cluster_name_map[cid] for cid in cluster_ids]就能拿到你需要的自定义名称列表。

小提示:如果你用的是fit_predict方法完成聚类(比如代码写成cluster_labels = hac_model.fit_predict(X)),把上述所有代码里的hac_model.labels_替换成cluster_labels就能正常运行,逻辑没有区别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 02:15:04