title: k-means algorithm not working
body: <p>I am trying to implement the k-means algorithm in Python 3 using Numpy. My input data matrix is a simple n x 2 data matrix of points:</p>
  
  <pre><code>[[1, 2],
   [3, 4],
     ...
   [7, 13]]
  </code></pre>
  
  <p>For some reason at each step in the iteration, none of my labels are the same. Every single label is different. Does anybody see anything overtly wrong that I'm doing? I tried to add some comments to my code so that people can understand the various steps I'm doing.</p>
  
  <pre><code>def kmeans(X,k):
  
      # Initialize by choosing k random data points as centroids
      num_features = X.shape[1]
      centroids = X[np.random.randint(X.shape[0], size=k), :] # find k centroids
      iterations = 0
      old_labels, labels = [], []
  
      while not should_stop(old_labels, labels, iterations):
          iterations += 1
  
          clusters = [[] for i in range(0,k)]
          for i in range(k):
              clusters[i].append(centroids[i])
  
          # Label points
          old_labels = labels
          labels = []
          for point in X:
              distances = [np.linalg.norm(point-centroid) for centroid in centroids]
              max_centroid = np.argmax(distances)
              labels.append(max_centroid)
              clusters[max_centroid].append(point)
  
          # Compute new centroids
          centroids = np.empty(shape=(0,num_features))
          for cluster in clusters:
              avgs = sum(cluster)/len(cluster)
              centroids = np.append(centroids, [avgs], axis=0)
  
      return labels
  
  def should_stop(old_labels, labels, iterations):
      count = 0
      if len(old_labels) == 0:
          return False
      for i in range(len(labels)):
          count += (old_labels[i] != labels[i])
      print(count)
      if old_labels == labels or iterations == 2000:
          return True
      return False
  </code></pre>