【发布时间】:2020-08-29 13:33:49
【问题描述】:
我正在通过查看文档的结构来对文档进行聚类。
我在下面的代码中提取了 BERT 嵌入变量 X 中的结构。
我正在尝试什么:
for num_clusters in np.arange(2,200):
model = KMeans(n_clusters=num_clusters)
model.fit(X)
pred = model.predict(X)
centers = model.cluster_centers_
cluster_sum = 0
for i , c in enumerate(centers):
use = []
for j , p in enumerate(pred):
if p == i:
use.append(X[j])
score = 0
for m in range(len(use)):
for n in range(len(use)):
score+=cos_similarity(use[m],use[n])
score = score/(len(use)*len(use))
cluster_sum += score
cluster_sum=cluster_sum/num_clusters
我编写了这段代码来查找集群的相似度分数(结合所有集群的相似度分数)。 我面临的问题: 随着聚类数量的增加,得分也在增加。
如何找到最佳聚类数? 该图适用于@Cyrus 在答案中建议的膝关节算法。我看不到我应该在哪里画线。
【问题讨论】:
标签: python machine-learning cluster-analysis k-means unsupervised-learning