这里,矩阵是一个列表列表
此函数打印出 list1 和 matrix_a 之间的所有距离,但我不确定如何从 matrix_a 和来自 matrix_b 的相应列表中获得 k 个最低距离。
我不允许使用 scikit learn 或 numpy
list1 = [5, 3, 2, 8, 5, 10, 8, 1, 2]
matrix_a = [[1, 3, 3, 2, 2, 1, 7, 2, 1], [4, 3, 1, 1, 2, 1, 4, 8, 1], [3, 1, 3, 1, 2, 1, 2, 1, 1], [5, 4, 6, 6, 4, 10, 4, 3, 1], [5, 1, 2, 1, 2, 1, 2, 1, 1], [3, 1, 1, 1, 2, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1, 1, 1], [10, 10, 9, 3, 7, 5, 3, 5, 1], [4, 1, 1, 1, 2, 1, 3, 1, 1], [5, 1, 1, 1, 1, 1, 1, 1, 1]]
matrix_b = [[0], [0], [0], [1], [0], [0], [0], [1], [0], [0]]
def get_distance(list1, list2):
"""returns euclidian distance between 2 lists"""
return sum((p-q)**2 for p, q in zip(list1, list2)) ** .5
def get_k_nearest_labels(list1, matrix_a, matrix_b, k):
for x in range(len(matrix_a)):
a = get_distance(list1, matrix_a[x])
print(a)
答案 0 :(得分:0)
您可以将所有距离 (a
) 存储在新列表中,对列表进行排序并选择 k
最小的元素。