如何从距离矩阵中获取点坐标?

时间:2016-10-11 23:05:16

标签: numpy matrix machine-learning pca

我有以下数据集,每个数据都是一个包含128个元素的数组。

[-0.08  0.23  0.21 -0.17  0.01  0.01  0.01  0.11 -0.04  0.03 -0.04 -0.1
 -0.04 -0.03  0.11 -0.04 -0.07 -0.02 -0.04 -0.16  0.07  0.16 -0.07 -0.13
  0.06 -0.04  0.03  0.12  0.15  0.04 -0.05 -0.19  0.06  0.02  0.1  -0.1
  0.09 -0.03  0.03  0.01  0.03 -0.04  0.12  0.07  0.    0.19  0.04 -0.07
 -0.17 -0.09  0.02  0.15 -0.1   0.03 -0.01  0.03  0.01 -0.11 -0.09 -0.05
  0.05 -0.11 -0.1   0.13  0.03 -0.07 -0.04  0.04  0.04  0.09  0.09 -0.04
 -0.02 -0.16  0.08  0.11 -0.12  0.09  0.05 -0.03 -0.02  0.06  0.13  0.23
  0.05 -0.04  0.04  0.05  0.01  0.14 -0.05 -0.07 -0.1   0.01 -0.11 -0.1
  0.02  0.05 -0.02 -0.02 -0.01  0.12  0.03 -0.01 -0.06 -0.05 -0.03  0.11
  0.05 -0.1   0.09 -0.12 -0.2   0.06  0.03  0.   -0.08 -0.06 -0.04  0.
  0.07  0.06 -0.05  0.01  0.13 -0.03  0.14  0.01]

[ 0.13  0.02  0.03  0.08 -0.01  0.    0.03 -0.06 -0.09 -0.11  0.02  0.12
 -0.01 -0.14 -0.1   0.08 -0.02 -0.08 -0.13  0.1   0.01  0.15  0.    0.09
 -0.05  0.13  0.04 -0.05  0.04  0.07 -0.12  0.14 -0.08  0.09 -0.09 -0.13
 -0.08  0.15 -0.03  0.1  -0.04  0.   -0.05  0.07  0.01  0.04  0.08 -0.08
 -0.08  0.1   0.22  0.07 -0.05  0.    0.06 -0.11 -0.01  0.08  0.06  0.   -0.
 -0.09  0.04  0.06 -0.04 -0.17  0.04 -0.06 -0.05  0.01 -0.04 -0.01  0.06
  0.17 -0.02 -0.08 -0.02 -0.06 -0.05  0.21  0.17 -0.02  0.02 -0.12  0.04
 -0.16  0.04 -0.08 -0.08  0.01 -0.05 -0.01 -0.15  0.08 -0.03  0.09  0.13
 -0.08  0.07 -0.07 -0.06  0.1  -0.02  0.21 -0.15 -0.13 -0.06  0.14  0.07
 -0.08  0.15  0.18 -0.11  0.05 -0.   -0.   -0.08 -0.04 -0.03  0.03 -0.03
  0.14  0.05 -0.04  0.1  -0.03  0.07 -0.12]

[-0.01  0.22  0.2  -0.17 -0.04  0.04  0.01  0.14 -0.07  0.01 -0.04 -0.16
  0.    0.11  0.15 -0.09  0.03 -0.07 -0.04 -0.19  0.06  0.15 -0.07 -0.06
  0.07 -0.1   0.    0.17  0.13  0.02 -0.   -0.17 -0.01  0.02  0.02 -0.06
  0.04  0.01  0.03  0.09 -0.03  0.02  0.01 -0.03  0.07  0.19 -0.05 -0.06
 -0.13 -0.1   0.03  0.23 -0.04  0.02 -0.07  0.01  0.03 -0.02 -0.02 -0.08
  0.04 -0.01 -0.15  0.08 -0.1  -0.01  0.05  0.12  0.03  0.07  0.13 -0.03
 -0.05 -0.14  0.11  0.11 -0.11 -0.    0.07  0.04 -0.02  0.04  0.15  0.14
  0.07 -0.03  0.04 -0.04 -0.02  0.08 -0.07 -0.08 -0.    0.04 -0.09 -0.1
  0.05 -0.01 -0.03 -0.02  0.    0.16  0.02  0.07 -0.15 -0.02 -0.09  0.05
  0.06 -0.15  0.14 -0.1  -0.21  0.07  0.03  0.06 -0.11 -0.05 -0.02  0.
  0.03  0.02 -0.07  0.01  0.12 -0.03  0.09  0.01]

[ 0.18 -0.04 -0.02  0.06 -0.05  0.07  0.02  0.16  0.   -0.02  0.1   0.06
  0.04 -0.12 -0.06  0.04  0.06 -0.05 -0.17  0.09  0.03  0.08  0.03  0.03
 -0.13 -0.02  0.05 -0.07 -0.09 -0.01 -0.11  0.05  0.04  0.13 -0.13 -0.06
 -0.07  0.1  -0.16  0.06 -0.1  -0.04 -0.16  0.02  0.02  0.02 -0.08 -0.06
 -0.1   0.15  0.2   0.08 -0.1   0.01 -0.01 -0.06 -0.03 -0.1   0.06  0.04
 -0.03 -0.12 -0.04 -0.04 -0.02 -0.21 -0.01  0.09 -0.05  0.05  0.02 -0.1
 -0.01 -0.05 -0.09  0.02  0.04 -0.01 -0.07  0.15 -0.01 -0.16 -0.02 -0.09
  0.01 -0.    0.05 -0.11 -0.    0.1  -0.1  -0.1  -0.18  0.13 -0.04  0.11
  0.09 -0.18 -0.03 -0.01  0.07  0.12 -0.06  0.05 -0.03 -0.12 -0.05  0.01
 -0.01 -0.1   0.    0.1  -0.02 -0.03  0.09  0.   -0.06 -0.05  0.03  0.08
 -0.04  0.03  0.07  0.09  0.29 -0.07  0.19 -0.07]

从数据集中,我得到每两个节点之间的距离矩阵。距离是欧几里德距离。

[[-inf       , -1.37174386, -0.90543197, -1.40566222],
 [-1.37174386,        -inf, -1.33795484, -0.5526271 ],
 [-0.90543197, -1.33795484,        -inf, -1.37944292],
 [-1.40566222, -0.5526271 , -1.37944292,        -inf]]

现在从距离矩阵中,我想制作一个3D UI,其中节点可以表示数据的位置。如何获取每个数据节点的x,y,z坐标。 或者我如何将128个元素数组转换为x,y,z的值,其中距离保持不变?

2 个答案:

答案 0 :(得分:1)

您的数据存在于128个维度中,因此您要求将欧几里德距离保留投影分为3个维度。什么都不是很完美。 t-SNE算法倾向于给出美学上令人愉悦的结果。

答案 1 :(得分:0)

您可以使用PCA将高维矩阵转换为3D或2D矩阵。 将X分配给距离矩阵或初始矩阵(无论哪一个检查输出可视化并选择看起来更合理的那个)。 这是Python Scikit-learn implementation

import numpy as np
from sklearn.decomposition import PCA
X = your distance matrix or your initial matrix
pca = PCA(n_components=3)
X3d = pca.fit_transform(X)

对于2D绘图,将n_components设置为2。