You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于TF-IDF的文档余弦相似度几何可视化:3D向量图实现需求

3D可视化TF-IDF文档向量

实现步骤

TF-IDF向量通常为高维数据,无法直接在3D空间展示,需先通过降维算法(如PCA)将其压缩至3维,再进行可视化。

1. 完整代码实现

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np

# 示例文档
documents = [
    "This is a sample document.",
    "This document is another example."
]

# TF-IDF向量化(转为数组格式方便后续处理)
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(documents).toarray()

# 计算余弦相似度
cosine_sim = cosine_similarity(tfidf_matrix[0:1], tfidf_matrix[1:2])
print("余弦相似度:", cosine_sim[0][0])

# PCA降维到3维
pca = PCA(n_components=3)
vectors_3d = pca.fit_transform(tfidf_matrix)

# 3D可视化绘制
fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(111, projection='3d')

# 绘制两个文档向量的端点
ax.scatter(vectors_3d[0,0], vectors_3d[0,1], vectors_3d[0,2], color='blue', label='文档1')
ax.scatter(vectors_3d[1,0], vectors_3d[1,1], vectors_3d[1,2], color='red', label='文档2')

# 绘制从原点到向量端点的连线(直观展示向量方向)
ax.quiver(0,0,0, vectors_3d[0,0], vectors_3d[0,1], vectors_3d[0,2], color='blue', alpha=0.5)
ax.quiver(0,0,0, vectors_3d[1,0], vectors_3d[1,1], vectors_3d[1,2], color='red', alpha=0.5)

# 设置图表标签与标题
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')
ax.set_title('TF-IDF文档向量3D可视化')
ax.legend()

plt.show()

2. 关键细节说明

  • 降维必要性: TF-IDF向量维度等于词汇表大小,高维数据无法在3D空间呈现,PCA能在保留数据核心特征的前提下完成降维。
  • 向量关系: 余弦相似度对应两个向量夹角的余弦值,图表中向量夹角越小,代表文档内容相似度越高。
  • 可视化优化: 通过颜色区分不同文档,添加坐标轴标签和图例,提升图表可读性。

内容的提问来源于stack exchange,提问作者bsraskr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 22:12:47