数据集距离矩阵numpy求法
公式
∵ D i j = ( x i − x j ) ( x i − x j ) T = r i − 2 x i x j T + r j ( r i = ∑ j x i j 2 ) ∴ D = r − 2 X X T + r T \begin{aligned} \because D_{ij}&=(x_i-x_j)(x_i-x_j)^T\\ &=r_i-2x_ix_j^T+r_j\;\;\;(r_i=\sum\limits_jx_{ij}^2)\\ \therefore D&=r-2XX^T+r^T \end{aligned} ∵Dij∴D=(xi−xj)(xi−xj)T=ri−2xixjT+rj(ri=j∑xij2)=r−2XXT+rT
代码
def pdist(X):
sum_X = np.sum(np.square(X),1)
D = np.add(np.add(-2*np.dot(X,X.T),sum_X).T,sum_X)
return D