2016-10-11 164 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