Python 为什么我的文本聚类会这样做

Python 为什么我的文本聚类会这样做,python,scikit-learn,cluster-analysis,k-means,tf-idf,Python,Scikit Learn,Cluster Analysis,K Means,Tf Idf,我有一个带有产品名称的未标记数据集。例如,棒球衫、棒球夹克、活跃的经典拳击手等 我用数据创建了一个tf idf矩阵,然后在矩阵上运行k-means。我绘制了一个簇内平方和图,以找到最佳k值,即5 聚类后,我计算出文档之间的余弦相似性 # cosine similarity between each document from sklearn.metrics.pairwise import cosine_similarity dist = 1.0 - cosine_similarity(tfidf

我有一个带有产品名称的未标记数据集。例如,棒球衫、棒球夹克、活跃的经典拳击手等

我用数据创建了一个tf idf矩阵,然后在矩阵上运行k-means。我绘制了一个簇内平方和图,以找到最佳k值,即5

聚类后,我计算出文档之间的余弦相似性

# cosine similarity between each document
from sklearn.metrics.pairwise import cosine_similarity
dist = 1.0 - cosine_similarity(tfidf_matrix)
print dist
然后,我在dist上使用MDS将其缩小为二维,这样我就可以绘制集群

from sklearn.manifold import MDS
mds = MDS(n_components=2, dissimilarity="precomputed", random_state=1)
xs, ys = pos[:, 0], pos[:, 1]
除了周长外,聚类图看起来还不错。它这样做有什么原因吗?其余的集群似乎围绕着一个类似的区域


TF-IDF仅适用于长文本

正因为如此,几乎每个文档都与其他文档完全不同,它们是这样“扇出”的


我怀疑k-means是否有效。

那么这是否意味着那些不在圆周上的不是完全不同的,是长文本?研究它们,你有数据。我假设这里的大多数文本与任何其他文本完全不同,因此可视化尝试将它们均匀地隔开(“统一”)。为了让TF-IDF工作得更好,你的文本应该有100多个单词!