代码之家  ›  专栏  ›  技术社区  ›  LivingRobot

用多种输入可视化KMeans聚类

  •  0
  • LivingRobot  · 技术社区  · 6 年前

    例如,我有3个文件夹,A、B和C,每个文件夹包含8个文本文件(总共24个文本文件)。我想通过让算法根据这24个文档的单词用法将它们分为3个簇来验证我是否正确地实现了KMeans。

    为此,我创建了词频矩阵并执行 tfidf

    为了试着调试,我试着把我的tfidf矩阵和作为输出的质心可视化,但我不太明白如何将这个24 x 2367矩阵可视化?我还将这个矩阵保存到一个.csv文件中,并希望在其上运行python库—但我看到的都是一个nx2矩阵。你要怎么做呢?

    2 回复  |  直到 6 年前
        1
  •  2
  •   ace_racer    6 年前

    我有几点建议(尽管我不确定这是否是这个问题的正确答案):

    答。由于您提到正在对非结构化文本文档进行聚类,并且没有得到很好的结果,因此在生成TF-IDF矩阵之前,可能需要应用典型的文本挖掘预处理任务,如停止词、标点符号删除、大小写缩减、词干提取。还有其他文本预处理任务,如删除数字、模式等,需要根据具体情况进行评估。

    b。就二维可视化而言,需要将特征向量的维数降到2,经过预处理后,维数可能会从2367降到2367,但不会降很多。然后你可以使用 SVD 在TF-IDF矩阵上,检查它能解释的方差量。但是,减少到2个组件可能会导致大量的数据丢失,并且可视化将没有那么有意义。但你可以试试看结果是否合理。

    c。如果文档中的文本内容很小,可以尝试手工制作描述文档的标记。这些标签的编号不应超过每个文档20个。使用这个新标签,您可以创建TF-IDF矩阵并执行SVD,这可能会在2D可视化中提供更多可解释的结果。

    Silhouette measure 也可以考虑。

        2
  •  1
  •   Tomasz Gandor    6 年前

    因为这是给学校的,这里没有代码,只有想法。

    numpy 阵列, h5py 图书馆,以及 json msgpack

    对于人类来说,看一个24×2367矩阵的问题是,它太宽了。里面的数字看起来也像胡言乱语。但与计算机不同,人们更喜欢图像(计算机不在乎)。

    24 x 2367远低于百万像素。但是24 x 2367有点太长了。把你的行填充到一个可以做成一个漂亮的矩形或近似的正方形(2400或2401应该可以),然后为每一行生成一个图像。然后,您可以查看单独的行,或者平铺它们以获得所有文档的完整6 x 4图像(请记住中间有一些填充)。如果像素是灰色的,请选择彩色填充)。

    进一步想法:

    • 主成分分析
    • t-SNE公司