sklearn KMeans返回的聚类中心与标签的对应顺序规则是什么
sklearn KMeans 标签与聚类中心匹配规则解答
核心结论
你推测的「按标签首次出现顺序匹配聚类中心排列顺序」的规则不存在,你举例的标签和中心对应关系是完全错误的。
正确匹配规则
sklearn.cluster.KMeans的标签和聚类中心遵循严格的索引对应逻辑:
- 标签值为
i的所有样本,对应的聚类中心固定为cluster_centers_数组中下标为i的元素,和标签在labels_列表中首次出现的顺序没有任何关系。
针对你给出的运行结果的正确对应关系
你拟合得到的聚类中心数组为:
kmeans.cluster_centers_ = array([[-0.9876 , -0.534, 0.342], [ 1.243, 1.235, 0.887 ], [ 0.242, 0.243, 0.02348]])
对应关系如下:
- 标签为
0的样本,归属第一个聚类中心[-0.9876 , -0.534, 0.342](即cluster_centers_[0]) - 标签为
1的样本,归属第二个聚类中心[ 1.243, 1.235, 0.887 ](即cluster_centers_[1]) - 标签为
2的样本,归属第三个聚类中心[ 0.242, 0.243, 0.02348](即cluster_centers_[2])
补充说明
你观察到labels_列表里第一个出现的标签是2,只是因为输入的前几个样本距离下标为2的聚类中心最近,和聚类中心的排序逻辑无关。你可以自行验证:任意取一个标签为2的样本,计算它到三个聚类中心的欧氏距离,它到cluster_centers_[2]的距离一定是三个距离里最小的。
内容的提问来源于stack exchange,提问作者Kyv
相关产品推荐
相关产品推荐

