ich habe aus einem Buch zu Empfehlungssystemen dieses Programm abgeschrieben, woraufhin ein Fehler aufgetaucht ist (KeyError: 'The Night Listener'), es muss an der Funktion topMatches liegen, den anderen Teil habe ich getestet.
Ich habe leider erst angefangen Python zu lernen und muss parallel das Thema durcharbeiten, deswegen wäre ich für Hilfe dankbar.
Code: Alles auswählen
critics={.....}
def sim_distance(prefs, person1, person2): #Funktion der das Dictionary mit den zwei Keys übergeben wird
#Liste der gemeinsamen Elemente bestimmen
si={}
for item in prefs[person1]:
if item in prefs[person2]: si[item]=1
#Wenn keine gemeinsame Bewertung existiert, null zurückgeben
if len(si)==0: return 0
#Quadrate aller Abstände addieren --> (Pythagoras)
sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
for item1 in prefs[person1] if item1 in prefs[person2]])#aber nur wenn beide das O. kennen
return 1/(1+sqrt(sum_of_squares))
def topMatches(prefs, person, n=5, similarity=sim_distance):
scores=[(similarity(prefs,person,other),other)
for other in prefs
if other <> person]
#Sortieren der Liste
scores.sort()
scorse.reverse()
return scores[0:n]