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

sklearn聚类如何提取各簇对应样本的原始标识符ID

问题:如何保留KMeans聚类结果与原始DataFrame行标识符的对应关系

你当前的代码逻辑里,行顺序天然是对齐的:df.to_numpy() 输出的数组行顺序和原DataFrame的行顺序完全一致,KMeans.fit_predict() 返回的标签数组y_km的元素顺序,和输入数组的行顺序严格一一对应,不需要借助to_records()做额外处理,直接按位置匹配即可。


最优实现方案

第一步:对齐标签到原数据

直接把聚类标签作为新列追加到原DataFrame,全程不改动原数据的行顺序即可保证匹配准确:

# 执行完y_km = km.fit_predict(array)后直接追加列,中间不要对df做行重排、筛选操作
df['cluster_id'] = y_km

追加完成后,DataFrame的行索引(即你读入文件时设置的identifier字段)就和对应聚类簇完成了绑定。

第二步:输出需要的格式

  • 输出「标识符:簇ID」格式的字典:
id_cluster_dict = df['cluster_id'].to_dict()
  • 导出为带标识符的文本/CSV文件:
# 导出时默认会保留行索引即identifier字段
df.to_csv('kmeans_cluster_result.csv', encoding='utf-8')

导出的CSV文件第一列为原始标识符,最后一列为对应簇编号,可直接用表格工具打开查看。


无修改原DataFrame的实现方式

如果你不想改动原DataFrame结构,直接通过索引和标签数组的位置配对生成映射即可:

# 按位置一一配对生成字典
id_cluster_dict = dict(zip(df.index, y_km))

注意事项

  • 只要你在生成numpy数组到得到聚类标签的流程中,没有对原DataFrame做行删除、重排、采样等打乱行顺序的操作,上述匹配逻辑100%准确
  • 如果中间做过行顺序调整,只需要保证传给KMeans的数组行顺序,和用来配对的ID列表顺序一致即可,本质是位置一一对应的关系

聚类3D可视化结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:06:30