在Python中绘制多维向量

5 投票
1 回答
7868 浏览
提问于 2025-05-01 06:26

我有一个矩阵,里面有N个用户和K个项目。我想在Python中绘制这个矩阵,把每一行当作一个有多个坐标的向量。比如说,简单的点图需要X,Y。而我的向量有K个坐标,我想把这N个向量都绘制成点,这样我就能看到它们之间的相似性。有没有人能帮我一下?

更新:

#Matrix M shape = (944, 1683)
plt.figure()
plt.imshow(M, interpolation='nearest', cmap=plt.cm.ocean)
plt.colorbar()
plt.show()

但是这样得到的结果是: enter image description here

我想要的效果是这样的:enter image description here

暂无标签

1 个回答

13

从这个问题来看,我不太确定我的回答是否合适,但我尽量猜测一下。我认为deltascience是在问,如何将多维向量一般性地绘制到二维空间中,就像散点图那样。我觉得最好的答案是,通常会使用某种降维算法。换句话说,你不是通过找到合适的matplotlib代码来实现这个,而是要把你的数据整理成合适的格式(一个列表用于X轴,另一个列表用于Y轴),然后再用常规的matplotlib方法来绘制:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

M = np.random.rand(944, 1683)

pca = PCA(n_components=2)
reduced = pca.fit_transform(M)

# We need a 2 x 944 array, not 944 by 2 (all X coordinates in one list)
t = reduced.transpose()

plt.scatter(t[0], t[1])
plt.show()

这里有一些相关的链接:

https://stats.stackexchange.com/questions/63589/how-to-project-high-dimensional-space-into-a-two-dimensional-plane

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

https://towardsdatascience.com/the-art-of-effective-visualization-of-multi-dimensional-data-6c7202990c57

https://www.evl.uic.edu/documents/etemadpour_choosingvisualization_springer2016.pdf

2019年7月补充:当时我没有想到,另一种人们常用来可视化多维数据的方法是网络可视化。在这个上下文中,每个多维数组可以看作一个节点,而边的权重可以是两个节点之间的余弦相似度或欧几里得距离。Python中的Networkx提供了一些非常不错的可视化选项。

撰写回答