def k_means_clustering(data,K):
N = data.shape[<NUM_LIT:0>]<EOL>centroids, data_norms = orthogonal_initialization(data,K)<EOL>old_centroids= np.zeros((N,K))<EOL>labels = []<EOL>while not _has_converged(centroids, old_centroids):    <EOL><INDENT>labels = get_labels(data, centroids,K)                <EOL>centroids = get_centroids(data,K,labels,centroids,data_norms)<EOL>old_centroids = centroids<EOL><DEDENT>return labels<EOL>
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)