首页 > 解决方案 > k-means 聚类中的项数

问题描述

我需要知道由 k-means 生成的集群中的项数。

我什至可以在此链接上找到可能的解决方案,内容失败。K-Means 聚类 - 输出聚类包含相同数量的元素,但顺序不同 [ Python ]

下面是我的代码:

vect = TfidfVectorizer(input='filename', stop_words=stopwords_list, encoding='utf8', ngram_range=(1,2), min_df=3)
tf_idf_matrix = vect.fit_transform(list_of_files)
print(tf_idf_matrix)
kmeans_6 = KMeans(n_clusters=17, n_init=10, init="k-means++", max_iter=100)
clustter6 = kmeans_6.fit_predict(tf_idf_matrix)
clustter6
order_centroids = kmeans_6.cluster_centers_.argsort()[:, ::-1]
termos = list(vect.vocabulary_)
clusterlists = []
for i in range(17):
dummy_list  = []
  for ind in order_centroids[i]:
    dummy_list.append('%s' % termos[ind])
  clusterlists.append(dummy_list)

上述代码的输出如下所示,

clusterlists[0] = 52005 examples
clusterlists[1] = 52005 examples. 

例如,我想用 clusterlists [0] 来展示 3000 个示例。Clusterlists 1展示了例如 3150 个示例。但是,它显示了集群中所有索引的数据库中术语的总值。

标签: pythonpython-3.xscikit-learncluster-analysisk-means

解决方案


KMeans有一个labels_属性,对于每个样本,该属性存储样本被分配到的簇号。您可以使用np.unique()来计算这些数字:

import numpy as np

print(np.unique(kmeans_6.labels_, return_counts=True))

这将打印两个数组:首先是集群 ID 编号列表,然后是相应的计数。


推荐阅读