del*_*nce 4 python plot vector matrix
我有一个包含 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()
Run Code Online (Sandbox Code Playgroud)
但这给了我结果: 
我想要的是这样的:

Mat*_* L. 10
从这个问题很难确定我的答案是否相关,但这是我最好的猜测。我相信 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()
Run Code Online (Sandbox Code Playgroud)
以下是一些相关链接:
http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
https://www.evl.uic.edu/documents/etemadpour_choosingvisualization_springer2016.pdf
2019 年 7 月附录:当时我没有想到,但人们经常可视化多维数据的另一种方式是网络可视化。在这种情况下,每个多维数组都是一个节点,边缘权重类似于两个节点的余弦相似度或欧几里得距离。Python中的Networkx有一些非常好的可视化选项。