我正在尝试使用频谱聚类对文本文档中存在的术语进行聚类。完成聚类后,我希望每个聚类中都包含这些术语。
我尝试的代码如下,
true_k = 4
vectorizer = TfidfVectorizer(stop_words='english',decode_error='ignore')
X = vectorizer.fit_transform(documents)
terms = vectorizer.get_feature_names()
model = SpectralClustering(n_clusters=true_k ,eigen_solver='arpack',affinity='nearest_neighbors')
model.fit(X)
从这里开始,我被困于获取每个集群的术语,使用'labels_'并没有帮助,因为它仅返回集群标签
编辑:解决了,下面的代码完成了,
print("Terms per cluster:")
for i in range(true_k):
print "Cluster %d:" % i,
T=X[model.labels_==i].indices
for ind in T:
print terms[ind]
print
如果我对您的理解正确,则必须首先拟合模型,即model.fit(X)
。要根据拟合模型访问X
属于集群的元素k
,请执行X[model.labels_==k]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句