如何在sklearn中打印聚类结果

How to print result of clustering in 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
...

我怎样才能得到它?不好意思问这个问题。

是时候帮助自己了。

之后
km.fit(M)

我们运行

labels = km.predict(M)

returns标签,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

更新: 您可以通过以下方式进行

"""data= data clustered retrieved by function as you want"""
"""model = result from the data with got by KMeans"""
"""cluster = clusters formed by the model"""
from sklearn.cluster import KMeans

data = clusteredData()
model = KMeans(n_clusters=5, init='random', max_iter=100, n_init=1, verbose=1)
cluster = model.fit_predict(scale(data))

dictionary = {}
for index in range(len(data)): 
    if cluster[index] in dictionary:
        value = []
        value = dictionary[cluster[index]]
        value.append(data[index])
        dictionary[cluster[index]] = value
    else:
        dictionary[cluster[index]]=data[index]

这将为您创建一个字典,其中 NUMBER_OF_THE_CLUSTER 作为键,该集群中的数据作为 VALUE