给定测试集P
, 其Shape为(M,D)
, 再给定训练集(N,D)
, 其Shape为(N,D)
.
令P_i
为P
的第i
行, 即P_i = [P_{i1}\space P_{i2}\space ··· \space P_{iD}]
, 同理C_j=[C_{j1}\space C_{j2}\space ··· C_{iN}]
.
首先计算P_i
与C_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_i
与C
的距离:
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}
同样的, P
与C
的距离为:
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;…