如何在sklearn中打印聚类结果

the*_*ina 11 python cluster-analysis k-means scikit-learn

我有一个稀疏矩阵

from scipy.sparse import *
M = csr_matrix((data_np, (rows_np, columns_np)));
Run Code Online (Sandbox Code Playgroud)

然后我正在以这种方式进行聚类

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

我的问题是非常的菜鸟:如何在没有任何额外信息的情况下打印聚类结果.我不关心密谋或距离.我只需要那样的聚集行

Cluster 1
row 1
row 2
row 3

Cluster 2
row 4
row 20
row 1000
...
Run Code Online (Sandbox Code Playgroud)

我怎么才能得到它?对不起,请原谅我这个问题.

the*_*ina 19

是时候帮助自己了.后

km.fit(M)
Run Code Online (Sandbox Code Playgroud)

我们跑

labels = km.predict(M)
Run Code Online (Sandbox Code Playgroud)

返回标签,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
Run Code Online (Sandbox Code Playgroud)

并打印结果

for item in clusters:
    print "Cluster ", item
    for i in clusters[item]:
        print i
Run Code Online (Sandbox Code Playgroud)