[python]scipy로 거리 행렬 만들기

3189 단어 파이썬seabornscipy

목표



행렬 $M$의 행 $m_i, m_j$의 거리로 구성된 거리 행렬 $dist(M)$를 만든다.
M = 
\begin{pmatrix}
m_1 \\
m_2 \\
\vdots \\
m_k
\end{pmatrix}\\

dist(M) = 
\begin{pmatrix}
dist(m_1,m_1) & dist(m_1,m_2) & \dots & dist(m_1,m_k)\\
dist(m_2,m_1) & dist(m_2,m_2) & & \vdots\\
\vdots & & \ddots & \\
dist(m_k,m_1) & \dots & & dist(m_k,m_k)
\end{pmatrix}

출처


import numpy as np
from scipy.spatial import distance

M = np.random.randint(0, 10, (5, 2))
dist_M = distance.cdist(M, M, metric='euclidean')

# M =>
# [[8 7]
#  [8 0]
#  [8 3]
#  [9 6]
#  [3 4]]

# dist_M =>
# [[ 0.          7.          4.          1.41421356  5.83095189]
#  [ 7.          0.          3.          6.08276253  6.40312424]
#  [ 4.          3.          0.          3.16227766  5.09901951]
#  [ 1.41421356  6.08276253  3.16227766  0.          6.32455532]
#  [ 5.83095189  6.40312424  5.09901951  6.32455532  0.        ]]


import seaborn as sns
import matplotlib.pyplot as plt

sns.heatmap(dist_M)
plt.show()

$m_0$와 $m_3$의 거리가 작다는 것이 시각적으로도 알기 쉬워집니다.


참고



htps : // / cs. s py. 오 rg/도 c/s해 py/레후오렌세/게네라테 d/s해 py. s 파치아 l.ぢs 탄세. c. St. HTML
h tps : // 세아보 rn. py였다. rg/게네라 d/세아보 rn. 헤아 t마 p. HTML

좋은 웹페이지 즐겨찾기