Евклидово расстояние 3 групп трехмерных координатных точек - PullRequest
0 голосов
/ 11 февраля 2020

Итак, я знакомлюсь с глубоким обучением, и в связи с первой проблемой, связанной с домашней работой, меня просят попрактиковаться в вычислении KNN, либо вручную, либо написав скрипт. Я решил сделать сценарий, чтобы я мог практиковать. Вот мой код, и мне было интересно, достаточно ли этого?

import math
from math import sqrt


set1 = [[0,1,0],[0,1,1],[1,2,1],[1,2,0]]
set2 = [[1,2,2],[2,2,2],[1,2,-1],[2,2,3]]
set3 = [[-1,-1,-1],[0,-1,-2],[0,-1,1],[-1,-2,1]]

# dataset = [
#            [[0,1,0],[0,1,1],[1,2,1],[1,2,0]], 
#            [[1,2,2],[2,2,2],[1,2,-1],[2,2,3]],
#            [[-1,-1,-1],[0,-1,-2],[0,-1,1],[-1,-2,1]]
# ]

test = [[1,0,1]]

distance = []

for a in test:
    temp = []
    for b in set1:
        dist = sum([pow(a[i]-b[i], 2) for i in range(len(a))])
        temp.append(dist)

    distance.append(temp)
print(distance)


for a in test:
    temp = []
    for c in set2:
        dist = sum([pow(a[i]-c[i], 2) for i in range(len(a))])
        temp.append(dist)

    distance.append(temp)
print(distance)


for a in test:
    temp = []
    for d in set3:
        dist = sum([pow(a[i]-d[i], 2) for i in range(len(a))])
        temp.append(dist)

    distance.append(temp)
print(distance)

Это возвращает:

[[3, 2, 4, 5]]
[[3, 2, 4, 5], [5, 6, 8, 9]]
[[3, 2, 4, 5], [5, 6, 8, 9], [9, 11, 2, 8]]

Я чувствую, что это может быть неправильно, но я не слишком уверен, что полный результат влечет за собой. Любая помощь или советы будут оценены. Я знаю, что есть функция numpy, чтобы сделать это проще, но я новичок в кодировании.

Спасибо всем!

...