基于EM算法的k均值算法python 实现

from sklearn.metrics import pairwise_distances_argmin
import numpy as np
import random
def find_cluster(X,n_cluster,seed):
    """
    基于EM的k均值算法算法
    :param X: 数据
    :param n_cluster: 聚类中心数量
    :param seed: 随机状态
    :return: 聚类中心坐标和数据标签
    """
    #随机产生初始聚类中心
    index=random.sample(range(0,X.shape[0]),n_cluster,rseed=seed)
    centers=X[index]
    while True:
        #将点分配至离其最近的簇中心点(E步)
        labels=pairwise_distances_argmin(X,centers)
        #将簇中心点设置为所有点坐标的平均值
        new_centers=np.array([X[labels==i].mean(0) for i in range(0,n_cluster) ])
        if np.all(centers,new_centers):
            break
        centers=new_centers
        return labels,centers








 


版权声明:本文为weixin_42185134原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。