我目前正在尝试使用 HDBSCAN 对一堆电影数据进行聚类,以便将相似的内容组合在一起并能够提出描述这些聚类的“主题”。我对 HDBSCAN 很感兴趣,因为我知道它被认为是软聚类,而不是 K-Means,它更适合我的目标。
执行 HDBSCAN 后,我能够找到每个群集中放置的电影。我现在想要的是代表每个集群的术语/单词。
我用 KMeans 做了类似的事情(下面的代码):
model = KMeans(n_clusters=70)
model.fit(text)
clusters=model.predict(text)
model_labels=model.labels_
output= model.transform(text)
titles=[]
for i in data['title']:
titles.append(i)
genres=[]
for i in data['genres']:
genres.append(i)
films_kmeans = { 'title': titles, 'info': dataset_list2, 'cluster': clusters, 'genre': genres }
frame_kmeans= pd.DataFrame(films_kmeans, index=[clusters])
print("Top terms per cluster:")
print()
#sort cluster centers by proximity to centroid
order_centroids = model.cluster_centers_.argsort()[:, ::-1]
for i in range(70):
print("Cluster %d:" % i),
for ind in order_centroids[i, :5]:
print(' %s' % tfidf_feature_names[ind]),
print()
print()
print("Cluster %d titles:" % i, end='')
for title in frame_kmeans.loc[i]['title'].values.tolist():
print(' %s,' % title, end='')
print() #add whitespace
print() #add whitespace
print()
虽然这适用于 KMeans,但我无法为 HDBSCAN 找到类似的方法,因为我知道它没有集群中心。我一直在查看文档,但我对此很陌生,我无法解决我的问题。
任何想法将不胜感激!感谢您的时间。