问题描述
我有一个数据集,其中包含观鸟者的评论。我使用TF-IDF矢量化器将文本注释转换为矢量特征,然后运行K-means聚类以将我的数据分为多个聚类。我有一组清晰的集群。但是,我一直在尝试寻找一种方法,以找出将哪些词分成哪些类。我知道如何获取功能标签/名称,但是我想查看每个功能下的实际数据点,然后将它们转换回原始单词。我正在使用Python和Scikit-Learn的K-means算法。
def final_k_model(X,finalk):
final_k_mod = KMeans(n_clusters=finalk,init='random',n_init=10,max_iter=300,tol=1e-04,random_state=0)
final_k_mod.fit(X)
# plot the results:
centroids = final_k_mod.cluster_centers_
tsne_init = 'pca'
tsne_perplexity = 20.0
tsne_early_exaggeration = 4.0
tsne_learning_rate = 1000
random_state = 1
tsnemodel = TSNE(n_components=2,random_state=random_state,init=tsne_init,perplexity=tsne_perplexity,early_exaggeration=tsne_early_exaggeration,learning_rate=tsne_learning_rate)
transformed_centroids = tsnemodel.fit_transform(centroids)
plt.figure(1)
plt.scatter(transformed_centroids[:,0],transformed_centroids[:,1],marker='x')
plt.savefig('plots\\cluster.png')
plt.show()
return final_k_mod
我提供了一些代码,但不确定是否有帮助,因为我没有错误。我只是想弄清楚这是否有可能,我一直在使用Google搜索并查看教程,但没有找到它。
解决方法
假设您通过以下方法计算了代码中的X,
#corpus = list of all documents
#vocab = list of all words in corpus
tdf_idf = TfidfVectorizer(vocabulary=vocab)
X = tdf_idf.fit_transform(corpus)
您正在寻找以下物品吗?
for centroid in centroids:
score_this_centroid = {}
for word in tdf_idf.vocabulary_.keys():
score_this_centroid[word] = centroid[tdf_idf.vocabulary_[word]]
pass