code: def k_means_clustering(data,K):
      
      N = data.shape[0]
      centroids, data_norms = orthogonal_initialization(data,K)
      old_centroids= np.zeros((N,K))
      labels = []
      
      # Run the main k-means algorithm
      while not _has_converged(centroids, old_centroids):    
          labels = get_labels(data, centroids,K)                
          centroids = get_centroids(data,K,labels,centroids,data_norms)
          old_centroids = centroids
          
      return labels
docs: K-means clustering is an algorithm that take a data set and 
      a number of clusters K and returns the labels which represents
      the clusters of data which are similar to others
      
      Parameters    
      --------------------
      data: array-like, shape= (m_samples,n_samples)
      K: integer
          number of K clusters   
      Returns
      -------
      labels: array-like, shape (1,n_samples)