KNN中图片的两个矩阵距离的计算方法
KNN中图片的两个矩阵距离的计算方法

KNN中图片的两个矩阵距离的计算方法

给定测试集P, 其Shape为(M,D), 再给定训练集(N,D), 其Shape为(N,D).

P_iP的第i行, 即P_i = [P_{i1}\space P_{i2}\space ··· \space P_{iD}], 同理C_j=[C_{j1}\space C_{j2}\space ··· C_{iN}].

首先计算P_iC_j间的距离dists(i,j),

d(P_i,C_j)=\sqrt{\sum_{k}{(P_{ik}-C_{jk})^2}}=\sqrt{\sum_{k}{P_{ik}^2}+\sum_{k}{C_{jk}^2}-2(P_{i1}*C_{j1}+···+P_{iD}*C_{jD})}

继续化简为:

\sqrt{||P_i||^2+||C_j||^2-2P_iC^T_j}

可用矩阵运算求解.

接下来考虑P_iC的距离:

dists[i]=\sqrt{\sum_{N}{d(P_i,C_N)^2}}=\sqrt{[\space||P_i||^2\space···\space||P_i||^2\space]+[\space||C_1||^2\space||C_2||^2\space···\space||C_N||^2]-2P_iC^T}

同样的, PC的距离为:

dists = \sqrt{\begin{pmatrix}
  ||P_1||^2&||P_1||^2 &··· &||P_1||^2 \\
  ||P_2||^2&||P_2||^2 &··· &||P_2||^2 \\
  \vdots &\vdots  & \ddots  &\vdots \\
  ||P_M||^2&||P_M||^2 &··· &||P_M||^2 
\end{pmatrix}+\begin{pmatrix}
  ||C_1||^2&||C_1||^2 &··· &||C_1||^2 \\
  ||C_2||^2&||C_2||^2 &··· &||C_2||^2 \\
  \vdots &\vdots  & \ddots  &\vdots \\
  ||C_M||^2&||C_M||^2 &··· &||C_M||^2 
\end{pmatrix}-2PC^T}

忽略amp;…

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据