2015-04-22 95 views
4

我有一個稀疏矩陣如何打印聚類結果sklearn

from scipy.sparse import * 
M = csr_matrix((data_np, (rows_np, columns_np))); 

然後我做聚類這樣

from sklearn.cluster import KMeans 
km = KMeans(n_clusters=n, init='random', max_iter=100, n_init=1, verbose=1) 
km.fit(M) 

和我的問題是非常小白:如何打印集羣結果沒有任何額外的信息。我不關心繪圖或距離。我只是需要聚集的行看起來這樣

Cluster 1 
row 1 
row 2 
row 3 

Cluster 2 
row 4 
row 20 
row 1000 
... 

我怎麼能得到它?請原諒我這個問題。

回答

9

時間來幫助自己。

km.fit(M) 

後,我們運行

labels = km.predict(M) 

返回標籤,numpy.ndarray。此數組中的元素數量等於行數。每個元素意味着一行屬於集羣。 例如:如果第一個元素爲5,則意味着第1行屬於第5個集羣。 讓我們將行放入這樣查看的列表字典中{cluster_number:[row1,row2,row3],...}

# in row_dict we store actual meanings of rows, in my case it's russian words 
clusters = {} 
    n = 0 
    for item in labels: 
     if item in clusters: 
      clusters[item].append(row_dict[n]) 
     else: 
      clusters[item] = [row_dict[n]] 
     n +=1 

,並打印出結果

for item in clusters: 
    print "Cluster ", item 
    for i in clusters[item]: 
     print i 
+0

感謝您給我們! –