numpy 및 해당 벡터화를 사용하여 KNN 알고리즘을 구현하려고합니다.중첩 된 행렬을 벡터화하는 numpy knn
import numpy as np
A = np.array([[11,12,13], [21,22,23], [31,32,33]])
B = np.array([[41,42,43], [51,52,53], [61,62,63]])
C = np.array([[71,72,73], [81,82,83], [91,92,93]])
X = np.array([A, B, C])
f = lambda a,b: (a-b)**2
np.sqrt(np.vectorize(f)(A, X).reshape(3,9).sum(axis=1))
# array([ 0., 90., 180.])
나는이 방법을 사용하는 경우, 나는 서로 모든 벡터의 모든 거리를 얻으려면 A.
모든 벡터의 거리의 3 × 1 행렬을 얻을, 나는 같은 결과 매트릭스를 필요 다음과 같습니다 :
array([[ 0., 90., 180.],
[ 90., 0., 90.],
[ 180., 90., 0.]])
원하는 결과를 얻으려면 어떻게 작동합니까?
'np.vectorize'를 사용할 때 요점은 무엇입니까? 당신은 그것없이 배열의 빼기와 힘을 할 수 있어야합니다. 이 함수는 스칼라로만 표현할 수있는 복잡한 함수를 의미합니다. – hpaulj
KNN 알고리즘을 순수 파이썬으로 작성할 수 있습니다. 그런 다음이를 쉰 코드로 다시 작성하는 방법을 묻습니다. 나는 더 잘 생각한다. –