基于用户的协同过滤推荐中class UserCf():
时间: 2024-05-21 18:16:13 浏览: 15
class UserCf():
def __init__(self, train_data):
self.train_data = train_data
self.user_sim = self._user_similarity()
def _user_similarity(self):
# 计算用户之间的相似度
user_sim = dict()
item_users = dict()
for u, items in self.train_data.items():
for i in items:
if i not in item_users:
item_users[i] = set()
item_users[i].add(u)
# 计算共现矩阵
for i, users in item_users.items():
for u in users:
if u not in user_sim:
user_sim[u] = dict()
for v in users:
if u == v:
continue
if v not in user_sim[u]:
user_sim[u][v] = 0
user_sim[u][v] += 1
# 计算相似度矩阵
for u, sim_users in user_sim.items():
for v, count in sim_users.items():
user_sim[u][v] = count / math.sqrt(len(self.train_data[u]) * len(self.train_data[v]))
return user_sim