我具有以下功能来计算距离
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]})
答案 0 :(得分:0)
您可以使用提供额外参数作为距离的排序功能对列表进行排序。 您的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"])