【问题标题】:Plot multidimensional vectors in Python在 Python 中绘制多维向量
【发布时间】:2014-11-03 09:36:40
【问题描述】:

我有一个包含 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()

但这给了我结果:

我想要的是这样的:

【问题讨论】:

  • 好吧,你应该向我们展示你到目前为止所做的尝试!
  • SO 不是代码编写服务,请在MCVE中提供您迄今为止编写的任何代码
  • 我应该告诉你我是 Python 的初学者。我到处搜索,但没有找到任何可以解决我的问题的方法。
  • 我更新了@KlausD 的帖子
  • 在搜索或询问实现之前,您应该考虑一下您希望看到的结果。您的示例是一个简单的二维散点图。但是要绘制 k 维数据,您需要一些其他概念,例如欧几里得嵌入或parallel coordinates

标签: python matrix vector plot


【解决方案1】:

从这个问题很难确定我的回答是否相关,但这是我的最佳猜测。我相信 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 月附录:当时我并没有想到,但人们经常可视化多维数据的另一种方式是使用网络可视化。在这种情况下,每个多维数组都是一个节点,边权重类似于两个节点的余弦相似度,或欧几里得距离。 Networkx in python 有一些非常好的可视化选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2014-06-01
    • 2015-03-11
    • 2020-05-09
    • 2012-11-14
    • 1970-01-01
    • 2014-12-26
    相关资源
    最近更新 更多