如何在sklearn中打印聚类结果
Posted
技术标签:
【中文标题】如何在sklearn中打印聚类结果【英文标题】:How to print result of clustering in sklearn 【发布时间】:2015-06-30 04:46:18 【问题描述】:我有一个稀疏矩阵
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
...
我怎样才能得到它?对不起这个问题。
【问题讨论】:
【参考方案1】:是时候帮助自己了。之后
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
【讨论】:
非常感谢,我也敞开心扉:) 非常有帮助的答案【参考方案2】:更新: 您可以通过以下方式进行操作
"""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
【讨论】:
以上是关于如何在sklearn中打印聚类结果的主要内容,如果未能解决你的问题,请参考以下文章
如何在 sklearn 中使用 gower 距离实现 pam 聚类算法?
如何在无监督聚类期间在 sklearn 的 TfidfVectorizer 中选择参数