问题的名称可能不是最合适的,因此我将尽力解释我的问题:
我根据用户的购买历史计算用户之间的余弦相似性,所以我得到了如下矩阵:
product 63767 76863 84325 86217 86833 130365 537077
username
45michael 0.0 1.0 0.0 0.0 1.0 1.0 0.0
7762hc 0.0 0.0 0.0 0.0 0.0 0.0 0.0
adrian12 0.0 0.0 0.0 0.0 0.0 0.0 0.0
alicia7 0.0 0.0 0.0 0.0 0.0 1.0 0.0
其中1表示用户是否购买了该书,0表示用户未购买
得到该矩阵后,我计算了用户之间的余弦相似矩阵:
cosine_sim = pd.DataFrame(cosine_sim, ndex=df_matrix.index, `columns = df_matrix.index)
结果矩阵如下所示:
username 45michael 7762hc adrian12 alicia7
username
45michael 1.000000 0.0 0.0 0.577350
7762hc 0.000000 0.0 0.0 0.000000
adrian12 0.000000 0.0 0.0 0.000000
alicia7 0.577350 0.0 0.0 1.000000
因此,现在如果我想让最相似的用户访问,例如45michael,我只需要这样做:
cosine_sim['45michael'].sort_values(ascending=False)[1:11]
返回如下输出:
username
alicia7 0.577350
adrian12 0.000000
7762hc 0.000000
现在我想在原始df中迭代该用户名,但当我这样做时:
for username in similar_users:
... print(username)
它返回给我这个:
0.5773502691896258
0.0
0.0
当我期待的是:
alicia7
adrian12
7762hc
有人知道如何获取用户名而不是余弦相似度值吗
目前没有回答
相关问题 更多 >
编程相关推荐