def predict(otrain):
binary = (otrain > 0)
norm = NormalizePositive(axis=1)
train = norm.fit_transform(otrain)
dists = distance.pdist(binary, 'correlation')
dists = distance.squareform(dists)
neighbors = dists.argsort(axis=1)
filled = train.copy()
for u in range(filled.shape[0]):
# n_u are the neighbors of user
n_u = neighbors[u, 1:]
for m in range(filled.shape[1]):
# This code could be faster using numpy indexing trickery as the
# cost of readibility (this is left as an exercise to the reader):
revs = [train[neigh, m]
for neigh in n_u
if binary[neigh, m]]
if len(revs):
n = len(revs)
n //= 2
n += 1
revs = revs[:n]
filled[u,m] = np.mean(revs)
return norm.inverse_transform(filled)
corrneighbours.py 文件源码
python
阅读 26
收藏 0
点赞 0
评论 0
评论列表
文章目录