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

如何使用KMeans对无标签XY坐标数据做距离聚类并可视化?

问题解答

1. 能否使用KMeans做聚类

完全可以。KMeans本身就是面向无标签数值型数据的聚类算法,你提供的X、Y坐标都是连续数值特征,完全符合KMeans的输入要求。

2. 具体实现步骤(Python环境)

默认使用pandas、scikit-learn、matplotlib库实现,以下是可直接运行的代码和说明:

  • 第一步:导入依赖库
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
  • 第二步:加载数据(以下是示例数据构造逻辑,你可以替换成自己的真实DataFrame)
df = pd.DataFrame({
    'X-COORDINATE': [12, 99, 90, 49],
    'Y-COORDINATE': [34, 42, 27, 64]
})
  • 第三步:训练KMeans模型获取聚类标签
    首先需要自行确定聚类簇数k,示例中我们取k=2,你可以根据自己的全量数据用肘部法、轮廓系数等方法确定最优k值:
# 初始化KMeans模型,random_state固定随机种子保证结果可复现
kmeans = KMeans(n_clusters=2, random_state=42)
# 训练模型并直接返回每个样本的聚类标签,存入原DataFrame
df['cluster_label'] = kmeans.fit_predict(df[['X-COORDINATE', 'Y-COORDINATE']])

运行完成后cluster_label列就是每个坐标点对应的聚类标签,取值为0到k-1的整数。

  • 第四步:聚类结果可视化
plt.figure(figsize=(8, 6))
# 按聚类标签分组,不同簇用不同颜色绘制
for label, group in df.groupby('cluster_label'):
    plt.scatter(group['X-COORDINATE'], group['Y-COORDINATE'], label=f'簇{label}', s=100)
# 补充图表信息
plt.xlabel('X-COORDINATE')
plt.ylabel('Y-COORDINATE')
plt.legend()
plt.title('KMeans聚类结果可视化')
plt.show()

注意事项

  • KMeans对特征尺度敏感,如果你的XY坐标数值范围差异较大,建议先做标准化处理再训练模型,避免单一维度主导距离计算
  • 聚类簇数不要随意指定,优先用肘部法计算不同k对应的簇内平方和,取拐点对应的k值,效果会更合理

内容的提问来源于stack exchange,提问作者GV-9wj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:18:03