python - 可视化文档嵌入和聚类
问题描述
我有以下数据框:
print(df)
document embeddings
1 [-1.1132643 , 0.793635 , 0.8664889]
2 [-1.1132643 , 0.793635 , 0.8664889]
3 [-0.19276126, -0.48233205, 0.17549737]
4 [0.2080252 , 0.01567003, 0.0717131]
我想对它们进行聚类和可视化以查看文档之间的相似之处。执行此操作的最佳方法/步骤是什么?
这只是一个小数据框,原始数据框有超过 2 万个文档。
解决方案
在您的案例中,文档向量位于 768 维欧几里得空间中。意思是在 768 维坐标空间中,每个点代表一个文档。假设这些已经被正确训练,可以安全地想象,与不同的文档相比,在这个空间中上下文相似的文档应该更接近彼此。这可能允许您应用聚类方法将相似的文档组合在一起。
对于聚类,您可以使用多种聚类技术,例如 -
您可以使用轮廓分数来找到聚类算法的最佳聚类数,以在聚类中最好地创建分离。
对于可视化,您只能在 3D 或 2D 空间中进行可视化。这意味着您将不得不使用一些降维方法将 768 维减少到 3 维或 2 维。
这可以通过将以下算法设置为 2 或 3 个组件来实现 -
对数据进行聚类并分别降低数据的维数后,您可以使用 matplotlib 在 2D/3D 空间中绘制每个点,并根据其集群 (0-7) 为每个点着色以可视化文档和集群。
#process flow
(20k,768) -> K-clusters (20k,1) ------|
|--- Visualize (3 axis, k colors)
(20k,768) -> Dim reduction (20k,3)----|
这是您要实现的目标的示例-
在这里,您可以看到 T-SNE 数据的前 2 个组成部分,每种颜色代表您通过选择的聚类方法创建的聚类(使用轮廓分数决定聚类的数量)
编辑:您可以应用降维将 768 维数据投影到 3D 或 2D 空间中,然后使用聚类方法进行聚类。这将减少您必须处理的计算量,因为现在您仅在 3 个维度而不是 768 个维度上进行聚类,但会以可能帮助您更好地区分聚类的信息为代价。
#process flow
|------------------------|
(20k,768) -> Dim reduction (20k,3)--| |-- Visualize
|--- K-Clusters (20k,1)--|
推荐阅读
- c++ - 模板功能图
- laravel - 未找到存储数据 RESTfull API 404
- reactjs - React JS 多个提交按钮 react-hook-form
- python - 如何在python中将不同年份之间的距离分成12个相等的部分
- python - 通过 Google Docs API Python 客户端库创建新的 Google 文档的命令是什么?
- angular - 从 Api 服务调用角度选择默认下拉列表
- c++ - 编译器找不到 std::variant 声明
- python - python 元组以逗号结尾
- php - 在 Laravel 8 中将图表刀片视图转换为 pdf
- c# - c#和XPath,需要帮助提取2段文本