class_docstr: A simple clustering method that forms k clusters by iteratively reassigning
  samples to the closest centroids and after that moves the centroids to the center
  of the new formed clusters.
  
  
  Parameters:
  -----------
  k: int
      The number of clusters the algorithm will form.
  max_iterations: int
      The number of iterations the algorithm will run for if it does
      not converge before that. 
class_docstr_tok: ["A","simple","clustering","method","that","forms","k","clusters","by","iteratively","reassigning","samples","to","the","closest","centroids","and","after","that","moves","the","centroids","to","the","center","of","the","new","formed","clusters",".","Parameters",":","--","--","--","--","--","-","k",":","int","The","number","of","clusters","the","algorithm","will","form",".","max_iterations",":","int","The","number","of","iterations","the","algorithm","will","run","for","if","it","does","not","converge","before","that","."]
code: def __init__(self, k=2, max_iterations=500):
      self.k = k
      self.max_iterations = max_iterations
  
file_path: ML-From-Scratch/mlfromscratch/unsupervised_learning/k_means.py
imports: from __future__ import print_function, division
  import numpy
  from mlfromscratch.utils import normalize, euclidean_distance, Plot
  from mlfromscratch.unsupervised_learning import *
label_desc: Use image node_id 1 to create a new KMeans object  with example: obj = KMeans(k, max_iterations)