Kmeans聚类中如何为各簇质心坐标添加对应簇标签
实现方法
scikit-learn的KMeans模型输出的cluster_centers_数组有固定顺序规则:数组第i行的质心,就对应标签值为i的簇,和fit_predict返回的样本簇标签取值完全对齐,不需要额外做距离匹配计算,直接按索引新增簇编号列即可。
对应修改代码如下:
a = kmeans_model.cluster_centers_ df_Centroid = pd.DataFrame(a,columns=['x','y']) # 新增簇编号列,默认簇编号从0开始,和kmeans_predict的标签值完全对应 df_Centroid['cluster_id'] = df_Centroid.index
如果需要簇编号从1开始计数,把新增列的代码替换为:
df_Centroid['cluster_id'] = df_Centroid.index + 1
可以用如下方式做结果校验:
# 取簇标签为0的所有样本计算坐标均值,和对应质心坐标完全一致 print("簇0样本均值:", y[kmeans_predict == 0].mean(axis=0)) print("簇0质心坐标:", df_Centroid[df_Centroid['cluster_id'] == 0][['x','y']].values)
内容的提问来源于stack exchange,提问作者user13468392
相关产品推荐
相关产品推荐

