由于不是学PTTHON的,不知道这几个函数的具体意义?
可以帮忙翻译下吗?最好是每句都说下。
PS:自己只能看懂部分
def User_Similarity(train):
W=dict()
for u in train.keys():
for v in train.keys():
if u == v:
continue;
W[u][v] = len(train[u],train[v])
W[u][v] /= math.sqrt(len(train[u]) * len(train[v]) * 1.0)
----------------------------------
#!/usr/bin/env python
# coding=utf-8
def UserSimilarity(train):
#建立倒排表
item_users = dict()
for u,items in train.items():
for i in item.keys():
if i not in item_users:
items_users[i] = set()
item_users[i].add(u)
#item_users即为物品到用户的倒排表
#计算用户之间的相关度
C = dict()#任意用户之间的相关度
N = dict()#用户正反馈物品的数目
for i ,users in item_users:
for u in users:
N[u] += 1
for v in users:
if u == v:
continue:
C[u][v] += 1
#最后计算结果矩阵
W = dict()
for u ,related_users in C.items():
for v,cuv in related_users:
W[u][v] = cuv / math.sqrt(N[u]* N[v]*1.0)
return W
-----------------------------------
def Recommend(user,train,W):
rank = dict()
interacted_items = train[user]
for v , wuv in sort(W[u].items,key = itemgetter(1),reverse = True)[0:k]:
for i ,rvi in train[v].items:
if i in interacted_items:
continue
rank[i] += wuv * rvi
return rank
---------------------
可以帮忙翻译下吗?最好是每句都说下。
PS:自己只能看懂部分
def User_Similarity(train):
W=dict()
for u in train.keys():
for v in train.keys():
if u == v:
continue;
W[u][v] = len(train[u],train[v])
W[u][v] /= math.sqrt(len(train[u]) * len(train[v]) * 1.0)
----------------------------------
#!/usr/bin/env python
# coding=utf-8
def UserSimilarity(train):
#建立倒排表
item_users = dict()
for u,items in train.items():
for i in item.keys():
if i not in item_users:
items_users[i] = set()
item_users[i].add(u)
#item_users即为物品到用户的倒排表
#计算用户之间的相关度
C = dict()#任意用户之间的相关度
N = dict()#用户正反馈物品的数目
for i ,users in item_users:
for u in users:
N[u] += 1
for v in users:
if u == v:
continue:
C[u][v] += 1
#最后计算结果矩阵
W = dict()
for u ,related_users in C.items():
for v,cuv in related_users:
W[u][v] = cuv / math.sqrt(N[u]* N[v]*1.0)
return W
-----------------------------------
def Recommend(user,train,W):
rank = dict()
interacted_items = train[user]
for v , wuv in sort(W[u].items,key = itemgetter(1),reverse = True)[0:k]:
for i ,rvi in train[v].items:
if i in interacted_items:
continue
rank[i] += wuv * rvi
return rank
---------------------