按距离排序

问题描述 投票:0回答:1

我有以下函数来计算距离

def Euclid_Distance(training_data, testing_data):
  sum = 0
  for i in range(0, len(testing_data)):
      sum += math.pow(training_data[i] - testing_data[i], 2)
  return math.sqrt(sum)

在KNN中,我如何根据距离对列表ls进行排序?

def KNN(k, training_data, test_data):
  ls = []

  for train_data in training_data:
      distance = Euclid_Distance(train_data, test_data)
      ls.append({"distance: ": distance, "class": train_data[len(train_data) - 1]})
python list sorting
1个回答
1
投票

你可以通过使用排序函数对列表进行排序,提供额外的参数作为距离,然后你的KNN函数就会像这样

def KNN(k, training_data, test_data):
  ls = []

  for train_data in training_data:
      distance = Euclid_Distance(train_data, test_data)
      ls.append({"distance: ": distance, "class": train_data[len(train_data) - 1]})
  ls.sort(key=lambda x:x["distance"])
© www.soinside.com 2019 - 2024. All rights reserved.