Używam następującego kodu z programowania inteligencji zbiorowej, jest to funkcja z książki, która oblicza odległość eclidian między dwoma krytykami filmowymi.Euclidian Distance Python Implementation
Ta funkcja sumuje różnicę w rankingu w słowniku, ale odległość euklidesowa w n wymiarach obejmuje także pierwiastek kwadratowy z tej sumy.
AFAIK, ponieważ używamy tej samej funkcji do oceniania wszystkich, nie ma znaczenia, że mamy pierwiastek kwadratowy lub nie, ale zastanawiałem się, czy istnieje jakiś szczególny powód?
from math import sqrt
# Returns a distance-based similarity score for person1 and person2
def sim_distance(prefs,person1,person2):
# Get the list of shared_items
si={}
for item in prefs[person1]:
if item in prefs[person2]:
si[item]=1
# if they have no ratings in common, return 0
if len(si)==0: return 0
# Add up the squares of all the differences
sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
for item in prefs[person1] if item in prefs[person2]])
return 1/(1+sum_of_squares)