Я хочу вычислить минимальное расстояние многомерного набора данных до многомерного вектора. У меня есть многовектор вектора:
z = [x,y] with x = [a_1,a_2,a_3] and y = [b_1,b_2,b_3]
и у меня есть база данных вида:
Z = [X,Y] with X = [x_1, x_2, x_3,..] and Y = [y_1, y_2, y_3]
where x_i, y_i have the same shape as x,y.
Моя норма определяется как:
d(a,b) = sqrt{(x -a\)^2 + (y - b)^2}.
Моя цель - найти точку минимального расстояния
min(d(x_i, y_i)) in Z to the Point (x,y).
Полагаю, важно отметить, что (x_i, y_i) имеют одинаковый индекс. Поэтому недостаточно рассчитать расстояние отдельно для x и y.
Я уже рассказал метод BallTree, но я мог сделать это только для x или y. Моя проблема состоит в том, чтобы рассчитать его для обоих подключенных друг к другу.
Matrix_X = np.array([[1, 1],
[2, 2],
[5, 5],
[6, 6]]
)
Matrix_Y = np.array([[0, 0],
[2, 2],
matrix_X = np.array([[1, 1, 1],
[2, 2, 2],
[5, 5, 5],
[6, 6, 6]]
)
matrix_Y = np.array([[0, 0, 0],
[2, 2, 2],
[4, 4, 4],
[7, 7, 7]]
)
search_vec_x= np.array([3, 3, 3])
search_vec_y= np.array([1, 1, 1])
def dist(a, b):
search_vec_x = np.array([3, 3])
search_vec_y = np.array([1, 1])
return np.sqrt((a - search_vec_x)*(a-search_vec_x) - (b - search_vec_y)*(b-search_vec_y))
matrix_Z = [matrix_X, matrix_Y]
search_vec_z = [search_vec_x, search_vec_y]
kdt = BallTree(matrix_Z, metric=dist)
closestpoint = matrix_Z[kdt.query(np.atleast_2d(search_vec_z), k=1, return_distance=False)]
К сожалению, он говорит мне, что у объекта 'list' нет атрибута 'size'.