NameErrorが出る
以下のコードを実行したいのですがエラーが出てしまいます。
解決方法を教えていただけると幸いです。
元のコードはdata-science-from-scratch/nearest_neighbors.pyにあります。
現在Pythonを学び始めたばかりなのですが、したいこととしてはk近傍方でk=1,3,5,7でどのような結果になるのか示したいと認識しています。
import math
def knn_classify(k, labeled_points, new_point):
"""each labeled point should be a pair (point, label)"""
# order the labeled points from nearest to farthest
by_distance = sorted(labeled_points,
key=lambda point_label: distance(point_label, new_point))
# find the labels for the k closest
k_nearest_labels = [label for _, label in by_distance[:k]]
return majority_vote(k_nearest_labels)
cities = [(-86.75,33.5666666666667,'Python'),(-88.25,30.6833333333333,'Python'),(-112.016666666667,33.4333333333333,'Java')]
cities = [([longitude, latitude], language) for longitude, latitude, language in cities]
for k in [1,3,5,7]:
num_correct = 0
for city in cities:
location,actual_language = city
other_cities = [other_city for other_city in cities
if other_city != city]
predicted_language = knn_classify(k, other_cities, location)
if predicted_language == actual_language:
num_correct += 1
print (k, "neighbor[s]", num_correct, "correct out of", len(cities) )
上記のコードを実行した時に以下のようにエラーが表示されてしまいます。
NameError Traceback (most recent call last)
<ipython-input-32-1bab7195f6b1> in <module>()
26 if other_city != city]
27
---> 28 predicted_language = knn_classify(k, other_cities, location)
29
30 if predicted_language == actual_language:
<ipython-input-32-1bab7195f6b1> in knn_classify(k, labeled_points, new_point)
6 # order the labeled points from nearest to farthest
7 by_distance = sorted(labeled_points,
----> 8 key=lambda point_label: distance(point_label, new_point))
9
10 # find the labels for the k closest
<ipython-input-32-1bab7195f6b1> in <lambda>(point_label)
6 # order the labeled points from nearest to farthest
7 by_distance = sorted(labeled_points,
----> 8 key=lambda point_label: distance(point_label, new_point))
9
10 # find the labels for the k closest
NameError: name 'distance' is not defined