【问题标题】:PCA and K-means for word clustering用于词聚类的 PCA 和 K-means
【发布时间】:2018-02-26 05:02:30
【问题描述】:

我有一个维基百科文章的语料库。我确定了 10,000 个最常见的词,找到了它们的 Word2Vec 向量,并在向量上使用球面 k-means 根据含义相似性将这些词聚类为 500 组。

我选择了 3 个词簇并将这些词转换回它们的词向量。每个词向量都是一个包含 300 个值的数组,因此我对所有这些值应用了 PCA(来自 sklearn)以将它们转换为 2D。然后我绘制了:

每个点代表一个词,每种颜色代表1个簇。问题是,这些集群不应该重叠。一个集群有计算机相关的词,另一个集群有种族相关的词,最后一个集群有关系相关的词。我用计算机单词将“鸡”这个词添加到集群中,但是在绘制时,它的点就在“键盘”的点旁边。

我不确定这里出了什么问题。我的方法有什么问题吗?这是我的 PCA 代码:

for words in theList: #theList is an array of my 3 clusters
    lexicalUnitVectors = load_bin_vec("GoogleNews-vectors-negative300.bin", words) #convert words to Word2Vec vectors
    lexicalUnitVectors = list(lexicalUnitVectors.values())
    lexicalUnitVectors = pca.fit(lexicalUnitVectors).transform(lexicalUnitVectors) #apply pca
    print(lexicalUnitVectors) #this shows a bunch of 2D points; all x and y values are close to 0 for some reason
    xs = [i*1 for i in lexicalUnitVectors[:, 0]] #ignore this
    ys = [i*1 for i in lexicalUnitVectors[:, 1]] #ignore this
    plt.scatter(xs, ys, marker = 'o')
    plt.show()

【问题讨论】:

    标签: python nltk cluster-analysis k-means pca


    【解决方案1】:

    1) 通常我认为您应该在进行集群之前应用 PCA。这就是 PCA 的重点,它可以降低维度,以便您可以仅在独特的方面进行聚类。

    2) 我不知道我是否同意您的观点,即前两个特征向量必须分开 - 如果您的维度从单词中减少,则有许多特征向量对每个集群都很重要。你保留了多少个特征向量?通常你只保留这样你解释了数据中约 90% 的可变性,但你应该玩弄这个。

    【讨论】:

      猜你喜欢
      • 2021-11-18
      • 2021-08-06
      • 2015-02-15
      • 2021-12-10
      • 2017-03-16
      • 2015-04-11
      • 2016-05-29
      • 2011-08-13
      • 2013-08-08
      相关资源
      最近更新 更多