我是一名關於python的新學習者,並且在嘗試重複指導手冊中提供的示例時遇到了一些問題。這個例子是關於推薦算法的。這個例子試圖實現一個項目列表,存儲評估特定項目的用戶。 這是代碼(蟒2.7)關於python,我無法理解書中提供的示例
def UserSimilarity(train):
#build inverse table for item_users
item_users=dict()
for u,items in train.items():
for i in items.keys():
if i not in item_users:
item_users[i]=set()
item_users[i].add(u)
#calculate co-rated items between users
C=dict()
N=dict()
for i, users in item_users.items():
print i,users
#print N[u]
for u in users:
N[u]=N[u]+1
print N[u]
for v in users:
print C[u][v]
if u==v:
continue
C[u][v]=C[u][v]+1
#calculate finial similarity matrix W
W=dict()
for u, related_users in C.items():
for v, cuv in related_users.items():
W[u][v]=cuv/math.sqrt(N[u]*N[v])
return W
PS: '訓練' 的數據格式是字典和類似{UserId1:{ItemId1:Ratings1,ItemId2,Rating2,...},...}
我所遇到的問題是,
Traceback (most recent call last):
File "D:\Users\Administrator\workspace\GroupLens\src\test3.py", line 82, in <module>
UserSimilarity(train_dic)
File "D:\Users\Administrator\workspace\GroupLens\src\test3.py", line 66, in UserSimilarity
N[u]=N[u]+1
KeyError: '3'
我不不知道如何改善它,並希望有人能幫助我! 非常感謝!
該錯誤指示的u個電流值不存在作爲KEYIN字典N,所以不能獲取它,並添加一個至它。爲什麼不存在?不可能說沒有看到其餘的代碼。 –
耶〜你是對的!這就是我錯了的地方。謝謝你的回答,這對我很有幫助! –