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

如何使用sklearn查找距离K-means聚类中心最近的样本点索引

获取K-means每个聚类中心最近样本点索引的方法

你可以通过计算每个簇内样本到对应簇中心的欧氏距离,取距离最小的样本映射回原始索引即可,参考实现如下:

import numpy as np

# 存储每个簇对应最近样本的原始索引
nearest_sample_idx = {}

for cluster_id in range(kmeans.n_clusters):
    # 取出当前簇包含的所有样本原始索引
    cluster_members = centroids[cluster_id]
    # 取出当前簇的中心坐标
    center = kmeans.cluster_centers_[cluster_id]
    # 计算簇内所有样本到中心的欧氏距离
    distances = np.linalg.norm(p50[cluster_members] - center, axis=1)
    # 找到距离最小的样本的原始索引
    min_pos = np.argmin(distances)
    nearest_sample_idx[cluster_id] = cluster_members[min_pos]

# 可根据需要保存结果
np.save("kmeans_50clusters_nearest_sample_idx.npy", nearest_sample_idx)

运行后nearest_sample_idx字典的键为聚类簇的ID,值为该簇距离中心最近的样本的原始索引,你可以直接根据索引从p50中取出对应样本。
注意:如果同一簇内有多个样本到中心的距离同为最小值,np.argmin会返回最先出现的样本的索引,符合绝大多数场景的使用需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:57:04