from math import sqrt
def sim_distance(prefs,person1,person2):
si={}
for item in prefs[person1]:
if item in prefs[person2]:
si[item]=1
if len(si)==0: return 0
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+sqrt(sum_of_squares))
reload(recommendations)
recommendations.sim_distance(critics,'Lisa Rose','Gene Seymour')
Und es ist FehlerWie lade ich den Namespace im Python neu?
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
recommendations.sim_distance(critics,'Lisa Rose','Gene Seymour')
NameError: name 'critics' is not defined
Kritiker ist eine kundenspezifische Array
Wo initialisierst du 'Kritiker'? – valdarin
in der recommendations.py, vor sim_distance – MindHacks
Wenn Sie den Code einfügen können, der Kritiker initialisiert, denke ich, wir können herausfinden, wo das Problem liegt. Wie bereits erwähnt, sagt Ihnen der Interpreter, dass er im aktuellen Umfang nichts namens "Kritiker" hat. Ich vermute, dass Sie es innerhalb einer Funktion definieren, das bedeutet, sobald die Funktion zurückkehrt, ist es nicht mehr im Bereich. – valdarin