我有一个稀疏矩阵

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
...

我怎么能拿到?请原谅我这个问题。

最佳答案

是时候自救了。后

km.fit(M)

我们运行
labels = km.predict(M)

返回标签numpy.ndarray。此数组中的元素数等于行数。每个元素都意味着一行属于集群。
例如:如果第一个元素是5,则表示第1行属于集群5。
让我们把我们的行放在一个列表字典中,按这种方式查找集群编号:【行1,行2,行3】,…
# 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

08-20 04:19