def orthogonal_initialization(X,K):
N,M = X.shape<EOL>centroids= X[np.random.randint(<NUM_LIT:0>, N-<NUM_LIT:1>,<NUM_LIT:1>),:] <EOL>data_norms = np.linalg.norm(X, axis = <NUM_LIT:1>)<EOL>center_norms = np.linalg.norm(centroids, axis=<NUM_LIT:1>) <EOL>for k in range(<NUM_LIT:1>,K):    <EOL><INDENT>new_center_index,new_center = new_orthogonal_center(X,data_norms,centroids,center_norms =center_norms)<EOL>centroids = np.vstack((centroids,new_center))          <EOL>center_norms = np.hstack((center_norms,data_norms[new_center_index]))   <EOL><DEDENT>return centroids,data_norms<EOL>
Initialize the centrodis by orthogonal_initialization.
Parameters    
--------------------
X(data): array-like, shape= (m_samples,n_samples)
K: integer
    number of K clusters   
Returns
-------
centroids: array-like, shape (K,n_samples)  
data_norms: array-like, shape=(1,n_samples)