отсортировать этот список по расстоянию - PullRequest
0 голосов
/ 05 мая 2020

У меня есть следующая функция для вычисления расстояния

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

1 Ответ

0 голосов
/ 05 мая 2020

Список можно отсортировать, используя функцию сортировки, указав дополнительный аргумент в виде расстояния. Тогда ваша функция 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"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...