基于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
相关产品推荐
相关产品推荐

