4

距離行列を計算しましたが、それを視覚化するために2つのアプローチを試みています。これは私の距離行列です:

delta =
[[ 0.          0.71370845  0.80903791  0.82955157  0.56964983  0.          0.        ]
 [ 0.71370845  0.          0.99583115  1.          0.79563006  0.71370845
   0.71370845]
 [ 0.80903791  0.99583115  0.          0.90029133  0.81180111  0.80903791
   0.80903791]
 [ 0.82955157  1.          0.90029133  0.          0.97468433  0.82955157
   0.82955157]
 [ 0.56964983  0.79563006  0.81180111  0.97468433  0.          0.56964983
   0.56964983]
 [ 0.          0.71370845  0.80903791  0.82955157  0.56964983  0.          0.        ]
 [ 0.          0.71370845  0.80903791  0.82955157  0.56964983  0.          0.        ]]

1から7までのラベルを考慮すると、1は実際には67に近く、 4から離れています。

最初に、tSNE 次元削減を使用しようとしました。

from sklearn.preprocessing import normalize
from sklearn import manifold
from matplotlib import pyplot as plt
from matplotlib.lines import Line2D

import numpy

model = manifold.TSNE(n_components=2, random_state=0, metric='precomputed')
coords = model.fit_transform(delta)

cmap = plt.get_cmap('Set1')
colors = [cmap(i) for i in numpy.linspace(0, 1, simulations)]

plt.figure(figsize=(7, 7))
plt.scatter(coords[:, 0], coords[:, 1], marker='o', c=colors, s=50, edgecolor='None')

markers = []
labels = [str(n+1) for n in range(simulations)]
for i in range(simulations):
    markers.append(Line2D([0], [0], linestyle='None', marker="o", markersize=10, markeredgecolor="none", markerfacecolor=colors[i]))
lgd = plt.legend(markers, labels, numpoints=1, bbox_to_anchor=(1.17, 0.5))
plt.tight_layout()
plt.axis('equal')
plt.show()

これにより、次のプロットが生成されます。

ここに画像の説明を入力

これが1が67に近いことを示していないことがわかります。代わりに、それは4に最も近いです。

次に、削減が極小値で停止したかどうかわからないので、グラフを描画しようとしました。

networkx を nx としてインポート

plt.figure(figsize=(7, 7))

dt = [('len', float)]
A = delta
A = A.view(dt)

G = nx.from_numpy_matrix(A) 
pos = nx.spring_layout(G)

nx.draw_networkx_nodes(G, pos, node_color=colors, node_size=50)

lgd = plt.legend(markers, labels, numpoints=1, bbox_to_anchor=(1.17, 0.5))
plt.tight_layout()
plt.axis('equal')
plt.show()

ご覧のとおり、同じことが起こります。この最新の方法を繰り返し続けると、さまざまな種類のグラフになる可能性があります。

ここに画像の説明を入力

ここでは、私が期待するものにさらに近づきます。ただし、これらの動作はどれも正しいようです。グラフの初期化がどれほど異なっていても、距離は尊重されるべきです。

したがって、この距離行列を適切に表現するには、何が欠けているのか疑問に思っています。

ありがとう。

ここに画像の説明を入力

4

0 に答える 0