我正在尝试使用谱聚类对文本文档中的术语进行聚类。聚类完成后,我想获取每个聚类中的术语。
我尝试的代码如下,
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("每个聚类的术语:") for i in range(true_k): print "聚类 %d:" % i, T=X[model.labels_==i].indices for ind in T: print terms[ind] print
回答:
如果我理解正确的话,你必须首先拟合模型,即model.fit(X)
。要访问属于聚类k
的X
的元素,根据拟合的模型,可以使用X[model.labels_==k]
。