全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
240 0
2025-09-15

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

聚类完成后,给每条样本贴上“类别标签”只需要一句话:把聚类算法输出的簇分配向量(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 向量就是样本→簇的“身份证”,只要按原顺序挂回原始数据框,就能随时查到每个样本归属。

二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群