繁体   English   中英

根据距离对列表进行排序

[英]sort this list based on distance

我有以下 function 来计算距离

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]})

您可以使用 sort function 提供额外参数作为距离对列表进行排序。 你的 KNN function 看起来像

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"])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM