为什么用不同的质心进行初始化时,k均值聚类给我不同的答案?

问题描述

我按照k均值聚类的伪代码编写了此代码。初始化具有不同值的聚类质心时,此代码给出不同的答案,但这些答案均不正确。你能帮我吗? 我测试了15个节点,公差= 0.00001,迭代= 100000 预先感谢。

class kMeans:
  def __init__(self,coordinates,tolerance,iter,nof):
    self.grid = coordinates
    self.N = coordinates.shape[0]
    self.t = tolerance
    self.nof = nof    
    self.f = None

  def kMeans(self,nof):
      
        assign = [0]*self.N
        self.fac = np.empty([nof,2])
        for i in range(nof):
              for j in range(2):
                self.fac[i,j] = self.grid[i+10,j]

        for itr in range(iter):
          for n in range(self.N):
            distance = [0]*nof
            for f in range(nof):
              distance[f] = math.sqrt((self.grid[n,0]-self.fac[f,0])**2 + (self.grid[n,1]-self.fac[f,1])**2 )
            assign[n] = np.argmin(distance)

          for fa in range(nof):
            l = []
            x,y = 0,0
            for asg in range(self.N):
              if fa == assign[asg]:
                l.append(asg)
            x = np.mean(self.grid[l,0])
            y = np.mean(self.grid[l,1])

            if abs(x-self.fac[fa,0]) >= self.t:
              self.fac[fa,0] = x
            if abs(y-self.fac[fa,1]) >= self.t:
              self.fac[fa,1] = y
          continue
    
        print('dist:',distance)
        print('assign:',assign)
        print('fac:',self.fac)
        print('locate:',self.grid[l,1])
        self.f = self.fac
        return self.fac

'''

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)