楼主: ewfwedwd
239 0

[问题] 聚类分析做完之后,怎么知道每个样本数据属于哪一类 [推广有奖]

  • 0关注
  • 1粉丝

已卖:424份资源

学科带头人

11%

还不是VIP/贵宾

-

威望
0
论坛币
1313 个
通用积分
456.6953
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
12660 点
帖子
909
精华
0
在线时间
224 小时
注册时间
2022-11-18
最后登录
2026-2-5

楼主
ewfwedwd 发表于 2025-9-15 18:25:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

聚类分析做完之后,怎么知道每个样本数据属于哪一类

聚类完成后,给每条样本贴上“类别标签”只需要一句话:把聚类算法输出的簇分配向量(cluster label)原封不动地并回原始数据框即可。下面给出通用做法与常见误区,全程不出现任何表格。

  1. 获取簇标签
    无论用 Python 的 scikit-learn 还是 R 的 stats::kmeans,拟合完后都会返回一个与样本数等长的整数向量,位置顺序与输入矩阵的行一一对应。
  • Python:
    kmeans.fit(X)
    labels = kmeans.labels_ # 这就是簇编号
  • R:
    km <- kmeans(scale(X), centers=3)
    labels <- km$cluster # 同样是簇编号
  1. 把标签挂回原数据
    保持顺序不变,直接新增一列即可。
  • Python:
    df_raw = pd.read_csv('manuf_samples.csv')
    df_raw['cluster_id'] = labels
  • R:
    df_raw$cluster_id <- labels

此后,用 df_raw$cluster_id(R)或 df_raw['cluster_id'](Python)即可知道每条样本属于哪一类。若想只看第 i 类,直接按 cluster_id 过滤即可,例如
df_raw[df_raw['cluster_id'] == 0]

  1. 顺序一致性是唯一易错点
    聚类前若做过行筛选、缺失值删除或 shuffle,一定确保“输入矩阵 X 的行号”与“原始数据框的行号”能对上。最安全的办法是:
  • 先给原始数据加一列 id=1…n;
  • 做完清洗后保留这份 id;
  • 聚类完把 labels 映射回 id,再 merge。
  1. 聚类结果不是“永久性真理”
    每次随机初始化可能得到不同编号,甚至簇内成员也会小幅变动。若需复现,固定随机种子;若需跨时间比较,可把簇质心保存下来,下次用 predict 进行“分配”而非重新聚类。

一句话总结:聚类输出的 labels 向量就是样本→簇的“身份证”,只要按原顺序挂回原始数据框,就能随时查到每个样本归属。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:样本数据 聚类分析 样本数 scikit-learn Cluster

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-5 13:10