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

如何区分K-means聚类后两个原始嵌入数据集所属簇?

确定聚类簇与原始数据集的对应关系

可以通过以下几种简单方法匹配簇和原始的flattened_embeddings_d、flattened_embeddings_nd:

方法1:基于标签位置统计

因为你是按[flattened_embeddings_d, flattened_embeddings_nd]的顺序拼接的数据集,所以标签数组labels的前len(flattened_embeddings_d)个元素对应d的样本,后len(flattened_embeddings_nd)个元素对应nd的样本。直接统计两部分样本的标签分布:

# 获取两个原始数据集的长度
d_len = len(flattened_embeddings_d)
nd_len = len(flattened_embeddings_nd)

# 统计d样本的标签分布
d_labels = labels[:d_len]
d_cluster = np.argmax(np.bincount(d_labels))
print(f"flattened_embeddings_d 对应簇 {d_cluster}")

# 统计nd样本的标签分布
nd_labels = labels[d_len:]
nd_cluster = np.argmax(np.bincount(nd_labels))
print(f"flattened_embeddings_nd 对应簇 {nd_cluster}")

如果聚类效果较好,某一类标签会在对应原始数据集中占绝对多数,直接取占比最高的簇即可。

方法2:对比初始质心与最终质心的距离

你初始化KMeans时用了d_means和nd_means,可以计算这两个初始质心与最终聚类质心centroids的欧氏距离,距离最近的就是对应簇:

from scipy.spatial.distance import euclidean

# 计算d_means到两个最终质心的距离
dist_d_0 = euclidean(d_means, centroids[0])
dist_d_1 = euclidean(d_means, centroids[1])
# 计算nd_means到两个最终质心的距离
dist_nd_0 = euclidean(nd_means, centroids[0])
dist_nd_1 = euclidean(nd_means, centroids[1])

if dist_d_0 < dist_d_1:
    print("flattened_embeddings_d 对应簇0,flattened_embeddings_nd对应簇1")
else:
    print("flattened_embeddings_d 对应簇1,flattened_embeddings_nd对应簇0")

这种方法适合初始化质心本身就是原始数据集均值的场景,能直接关联初始目标和最终聚类结果。

方法3:可视化时区分原始数据集

修改你的可视化代码,直接用不同标记区分原始的两个数据集,和聚类簇的颜色对应起来验证:

# 拆分回原始数据集
d_data = embeddings_concat[:d_len]
nd_data = embeddings_concat[d_len:]

# 绘制d的样本(用方形)
plt.scatter(d_data[:,0], d_data[:,1], s=50, c='lightblue', marker='s', edgecolor='black', label='flattened_embeddings_d')
# 绘制nd的样本(用圆形)
plt.scatter(nd_data[:,0], nd_data[:,1], s=50, c='pink', marker='o', edgecolor='black', label='flattened_embeddings_nd')
# 绘制聚类质心
plt.scatter(centroids[:,0], centroids[:,1], s=150, color='red', marker='*', edgecolor='black')

plt.legend()
plt.show()

对比这张图和你之前的聚类可视化图,就能直观看到哪个颜色的簇和哪个原始数据集重合度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:01:28