2016-10-11 103 views
0

我有以下数据集,每个数据是一个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的值?

回答

1

您的数据存在128个维度,因此您要求将欧几里德距离保留投影映射到3维。没有什么作品完美。 t-SNE算法倾向于给出美观的结果。

+0

紧凑,但很好的答案! – sascha

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

+0

我得到了ValueError:n_components = 3对于n_features = 1无效,而fit_transform我的数据矩阵。我的数据矩阵是128 * 1. – BooYaah

+0

数据矩阵128x1意味着您有128个样本,每个1维(1个特征),因此您无法将维度从1减少到3!您的输入矩阵应该有几个样本和3个以上的特征(n_sampleXn_features),特征数量应该多于n_components。作为输入,您应该将矩阵中的所有数据不仅限于一个样本。所以如果一个样本是128 x 1,那么首先将它转置为1 x 128,然后堆叠所有样本以获得n_samples x 128,然后将其用作n_components = 3的输入,然后完成。 – Ash