def svd_score(data_mat, user, item, sim_meas):
n = shape(data_mat)[1]
sim_total = 0.0
rat_total = 0.0
u, sigma, vt = la.svd(data_mat)
sig_mat = mat(eye(4) * sigma[:4])
data_trans = data_mat.T * u[:, :4] * sig_mat.I
for j in range(n):
user_rate = data_mat[user, j]
if user_rate == 0 or j == item:
continue
sim = sim_meas(data_trans[item, :].T, data_trans[j, :].T)
print('the %d and %d similarity is: %f' % (item, j, sim))
sim_total += sim
rat_total += sim * user_rate
if sim_total == 0:
return 0
else:
return rat_total / sim_total
评论列表
文章目录