def check_predict():
Best = namedtuple("Best", ["U", "values", "min_value"])
values = [((0, 0), 0) for _ in range(N_TOP_PER_CHUNK)]
bests = []
bests.append(Best(U_sinh, list(values), 0))
bests.append(Best(U_rr, list(values), 0))
user_indices = random.choices(range(len(users)), k=N_PER_CHUNK)
repo_indices = random.choices(range(len(repos)), k=N_PER_CHUNK)
for index in range(N_PER_CHUNK):
pos = (user_indices[index], repo_indices[index])
if pos in nonzero_positions: # Link already exists.
continue
for i in range(len(bests)):
new = bests[i].U[pos[0], :] @ V[:, pos[1]]
if new > bests[i].min_value:
bests[i].values.append((pos, new))
bests[i].values.sort(key=lambda p: p[1], reverse=True)
bests[i].values.pop()
bests[i] = bests[i]._replace(min_value=bests[i].values[-1][1])
for i in range(len(bests)):
assert len(bests[i].values) == N_TOP_PER_CHUNK
return bests[0].values, bests[1].values
评论列表
文章目录