我有一个稀疏矩阵
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
...
我怎样才能得到它?对不起,请原谅我。
答案 0 :(得分:17)
是时候帮助自己了。之后
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
答案 1 :(得分:0)
更新: 您可以通过以下方式完成
php
这将为您创建一个字典,以NUMBER_OF_THE_CLUSTER作为键,并将该群集中的数据作为VALUE