python - 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 个示例。但是,它显示了集群中所有索引的数据库中术语的总值。
解决方案
KMeans
有一个labels_
属性,对于每个样本,该属性存储样本被分配到的簇号。您可以使用np.unique()
来计算这些数字:
import numpy as np
print(np.unique(kmeans_6.labels_, return_counts=True))
这将打印两个数组:首先是集群 ID 编号列表,然后是相应的计数。
推荐阅读
- c++11 - 求解线性系统的最佳方法是什么(就结果的准确性而言)?
- python - newrelic 代理仅在暂存时不向 newrelic 服务器发送数据
- git - SourceTree 总是权限被拒绝(公钥)
- vb.net - VB 重载 Textboxt BorderStyle 属性给出错误“指定的转换无效。”
- ssl - 使用 curl 的延迟分析 HTTPs(带两种 SSL)
- java - 如何保持 RecyclerView 显示
- solr - Liferay 6.2 GA3 配置 SOLR 搜索引擎时不显示文章
- amazon-sqs - 使用 AWS SQS 并发布到 Azure 服务总线
- apache-beam - Apache Beam:不可见的参数类型异常
- facebook-graph-api - 从 Facebook Instagram API 一次查询中获取有关所有媒体对象的信息